Есть ли способ удалить зависимость по умолчанию от Entity Framework в проекте ASP.NET MVC 4 и заменить ее другой аналогичной технологией, такой как Шикарно
Есть ли способ удалить зависимость по умолчанию от Entity Framework в MVC 4?
Ответы (1)
Если вы создадите новое веб-приложение ASP.NET MVC 4 и выберете Интернет-приложение в качестве шаблона проекта, вы заметите, что Entity Framework упоминается и используется как часть SimpleMembership. Однако существует лишь очень небольшая зависимость от Entity Framework, и ее, вероятно, не стоит удалять.
Похоже, что Entity Framework используется только для двух второстепенных задач
Первый способ использования Entity Framework — создать схему базы данных, необходимую для хранения данных о членстве. Создание схемы базы данных — это не то, что Dapper сделает за вас, и если вы удалите Entity Framework, вам придется вручную управлять изменениями в ваших моделях членства/базе данных.
Второй способ использования Entity Framework — в одном методе с именем ExternalLoginConfirmation внутри AccountController по умолчанию в рамках его интеграции OAuth. Он используется для регистрации новых пользователей, прошедших аутентификацию от внешнего провайдера (например, Facebook).
Тогда мы можем сказать, что SimpleMembership использует команды SQL, а не Entity Framework [1].
Поскольку SimpleMembership использует команды SQL, а не Entity Framework, оно должно быть таким же быстрым, как и сопоставимое решение Dapper для этой задачи. Кроме того, эта конфигурация SimpleMembership была тщательно протестирована корпорацией Майкрософт и сообществом. По этим причинам я бы оставил его в покое. Код, касающийся безопасности, должен быть оставлен на усмотрение аккредитованных экспертов по безопасности [2].
Как удалить Entity Framework из нового веб-приложения ASP.NET MVC 4
Если вы действительно хотите, зависимость очень легко удалить (я предполагаю, что ваша база данных членства уже создана и работает).
=====› Шаг 1
В обозревателе решений Visual Studio откройте папку «Ссылки».
Щелкните правой кнопкой мыши EntityFramework и выберите «Удалить».
=====› Шаг 2
Откройте файл Filters/InitializeSimpleMembershipAttribute.cs.
Удалите следующее:
using System.Data.Entity.Infrastructure;
а также
Database.SetInitializer<UsersContext>( null );
а также
using ( var context = new UsersContext() ) {
if ( !context.Database.Exists() ) {
// Create the SimpleMembership database without Entity Framework migration schema
( ( IObjectContextAdapter ) context ).ObjectContext.CreateDatabase();
}
}
=====› Шаг 3
Открыть: Models/AccountModels.cs
Удалите следующее:
public class UsersContext : DbContext {
public UsersContext()
: base( "DefaultConnection" ) {
}
public DbSet<UserProfile> UserProfiles {
get;
set;
}
}
=====› Шаг 4
Открыть: Контроллеры/AccountController.cs
Найдите метод с именем ExternalLoginConfirmation.
Замените следующее:
using ( UsersContext db = new UsersContext() ) {
UserProfile user = db.UserProfiles.FirstOrDefault( u => u.UserName.ToLower() == model.UserName.ToLower() );
// Check if user already exists
if ( user == null ) {
// Insert name into the profile table
db.UserProfiles.Add( new UserProfile {
UserName = model.UserName
} );
db.SaveChanges();
С вашим щеголеватым эквивалентом кода — комментарии к коду говорят вам, что нужно реализовать.
Вы должны иметь возможность полностью удалить этот и другие методы, если вы не используете OAuth.
И вуаля ;)
[1] Все реализовано в виде вызовов SQL, а не требует хранимых процедур, представлений, агентов и уведомлений об изменениях.
Джон Галлоуэй , Майкрософт[2] Позвольте мне дать вам все мои стандартные предостережения относительно ваших собственных криптографических алгоритмов и систем безопасности: не делайте этого. Очень, очень легко создать системы безопасности, которые почти безопасны, но не совсем. Система безопасности, которая дает вам ложное ощущение безопасности, хуже, чем отсутствие системы безопасности вообще!
Eric Lippert, Legend