В моем веб-проекте я пытаюсь использовать первый подход модели Entity Framework 6. Модель создается из существующей базы данных в отдельном проекте. Для построения модели строка подключения сохраняется в app.config проекта доступа к данным. В основном веб-проекте (ASP.NET Core MVC) Я пытаюсь создать контекстное создание в классе Startup.cs.Модель создания первого DbContext в Entity Framework 6
Ниже приведен код для частичного класса контекста. Частичный класс используется, потому что контекст автоматически генерируется из шаблона.
[DbConfigurationType(typeof(EntityFrameworkConfig))]
public partial class MyEntities
{
public MyEntities(String name) : base(name)
{
}
}
Для использования конфигурации рамочного объекта из кода вместо app.config, которые не может быть использован с ASP.NET основных проектами я класс конфигурации, унаследованными от System.Data.Entity.DbConfiguration
public class EntityFrameworkConfig : DbConfiguration
{
public EntityFrameworkConfig()
{
this.SetDefaultConnectionFactory(new SqlConnectionFactory());
this.SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
}
}
В конфигурации .json в веб-проекте у меня есть строка соединения:
{
"MailSettings": {
"ToAddress": "[email protected]"
},
"Connection": {
"ConnectionString": "data source=SERVER;initial catalog=DB;user id=user;password=pwd;MultipleActiveResultSets=True;App=EntityFramework;"
}
}
в Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
...
String connStr = _config["Connection:ConnectionString"];
services.AddScoped((_) => new MyEntities(connStr));
...
}
Я испытываю UnintentionalCodeFirstException выброшен из OnModelCreating случае автогенерируемая контекста класса:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
Является ли это правильный способ использовать Entity рамки 6 модели первый подход с проектом asp.net MVC ядра и в чем причина этого исключения?
Я сделал то же самое, но всегда получал это исключение. Единственное отличие состоит в том, что я использовал частичный класс для расширения автоматически созданного контекстного класса с помощью нового конструктора, чтобы включить передачу строки подключения в качестве аргумента, а в моем проекте.json У меня есть net462 в качестве фреймворка. – srlle
Вы правильно определили '' ' entityFramework>' правильно? вы можете это показать? –
Sampath