Phone19类继承Phone类并包含其他字段。这里的想法是使用TPH(每层次表的表)方法扩展现有的数据库模型。我通过PM控制台为两个上下文启用迁移,它们使用正确的上下文,但是当我向“父”迁移添加迁移时,会添加Phone19类的字段。有没有办法可以覆盖IDbset?我不能使它成为虚拟的并且稍后覆盖它,因为一个人正在使用Phone类而另一个正在使用类Phone19
有一个基本上下文,看起来像这样
public class CallTrackingDBContext : DbContext
{
public IDbSet<Phone> Phones { get; set; }
private void InitContext()
{
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
Configuration.AutoDetectChangesEnabled = false;
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 100000;
}
public CallTrackingDBContext(DbConnection dbConnection) : base(dbConnection,false)
{
InitContext();
}
public CallTrackingDBContext() : base("CallTrackingDBContext")
{
InitContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
还有另一个上下文继承了前一个,应该覆盖Phones Dbset:
public class ClientContext19 : CallTrackingDBContext
{
public new IDbSet<Phone19> Phones { get; set; }
public ClientContext19(DbConnection dbConnection) : base(dbConnection)
{
InitContext();
}
public ClientContext19() : base("DBContext19")
{
InitContext();
}
private void InitContext()
{
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
Configuration.AutoDetectChangesEnabled = false;
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 100000;
}
}
答案 0 :(得分:0)
使用Phone19
将NotMappedAttribute
退出基于约定的模型。在新模型中,使用流畅的配置将其编织回来。
public class ClientContext19 : CallTrackingDbContext
{
...
public override void OnModelCreating(DbModelBuilder dmb)
{
dmb.Entity<Phone>()
.Map<Phone19>(m => m.Requires("discriminator").HasValue("Phone19"));
}
}
您可以自定义鉴别器列名称和值,或者甚至只需要Phone19
上的某个属性具有将行标记为Phone19
而不是Phone
的值}。