У меня есть сборка с классами моих доменов - «Domains.dll». Я динамически добавляю в классы загрузки DbContext Dbset сборки.Entity Framework (первый код) - динамическое построение модели
public class MyContext : DbContext
{
public MyContext() : base("DBConnection"){}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Assembly assembly = Assembly.LoadFrom("Domains.dll");
var entityMethod = typeof(DbModelBuilder).GetMethod("Entity");
var list = assembly.GetTypes().OrderBy(i => i.GetType().Name);
foreach (Type item in list)
{
entityMethod.MakeGenericMethod(item)
.Invoke(modelBuilder, new object[] { });
}
}
}
Далее я создаю базу данных
context.Database.Create();
Это работает, но с проблемой для моего домена. У меня есть класс для родительского объекта
public abstract class Entity
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
public class Person : Entity
{
public string FirstName {get ;set;}
public string LastName {get ;set;}
}
Если теперь запустить базу данных - таблица «Person» не create.It создает таблицу «объекты» с полями Id, FirstName, LastName.
Если я изменить человека
public class Person
{
public int Id {get; set;}
public string FirstName {get ;set;}
public string LastName {get ;set;}
}
затем в базе данных создается две таблицы - «Персона» и «Сущности». Как использовать наследование? Как мне это сделать правильно?
Я знаю, что эта нить очень старый! Но у вас возникла эта проблема? ** С автоматической обновлением базы данных? ** – Flo