Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityFramWork 6-代码优先-TPT继承-基类的不同模式_C#_Entity Framework 6_Ef Code First - Fatal编程技术网

C# EntityFramWork 6-代码优先-TPT继承-基类的不同模式

C# EntityFramWork 6-代码优先-TPT继承-基类的不同模式,c#,entity-framework-6,ef-code-first,C#,Entity Framework 6,Ef Code First,我在一个程序集中拥有以下实体和DBContext: public class Notification { public virtual string Title { get; set; } public virtual string Message { get; set; } } public class BaseModelContext : DbContext { /// <inheritdoc /> public BaseModelContex

我在一个程序集中拥有以下实体和DBContext:

public class Notification
{
    public virtual string Title { get; set; }
    public virtual string Message { get; set; }
}

public class BaseModelContext : DbContext
{
    /// <inheritdoc />
    public BaseModelContext()
    {
    }

    /// <inheritdoc />
    public BaseModelContext(string connectionString, ContextMode mode) : base(connectionString, mode)
    {
    }

    /// <inheritdoc />
    public BaseModelContext(DbConnection connection, ContextMode mode) : base(connection, mode)
    {
    }

    public virtual DbSet<Notification> Notifications { get; set; }
}
公共类通知
{
公共虚拟字符串标题{get;set;}
公共虚拟字符串消息{get;set;}
}
公共类BaseModelContext:DbContext
{
/// 
公共BaseModelContext()
{
}
/// 
公共BaseModelContext(字符串connectionString,ContextMode模式):基本(connectionString,mode)
{
}
/// 
公共BaseModelContext(DbConnection连接,ContextMode模式):基本(连接,模式)
{
}
公共虚拟数据库集通知{get;set;}
}
现在,在另一个程序集中,我想从通知实体派生:

public class TransportNotification : Notification
{
    public virtual int Position { get; set; }
}

public class TransportModelContext : MarvinDbContext
{
    /// <inheritdoc />
    public TransportModelContext()
    {
    }

    /// <inheritdoc />
    public TransportModelContext(string connectionString, ContextMode mode) : base(connectionString, mode)
    {
    }

    /// <inheritdoc />
    public TransportModelContext(DbConnection connection, ContextMode mode) : base(connection, mode)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TransportNotification>().ToTable("TransportNotifications");

        base.OnModelCreating(modelBuilder);
    }

    public virtual DbSet<Notification> TransportNotifications { get; set; }
}
公共类传输通知:通知
{
公共虚拟整数位置{get;set;}
}
公共类TransportModelContext:MarvinDbContext
{
/// 
公共交通模型上下文()
{
}
/// 
public TransportModelContext(string connectionString,ContextMode模式):基本(connectionString,mode)
{
}
/// 
public TransportModelContext(DbConnection连接,ContextMode模式):基本(连接,模式)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable(“TransportNotifications”);
基于模型创建(modelBuilder);
}
公共虚拟数据库集传输通知{get;set;}
}
我的目标是在具有不同DBContext和模式的其他表中只有一个通知表和一个或多个通知派生。这可能吗?如果是这样,有人会怎么做吗?
在我的测试中,通知表也是由迁移工具(添加迁移)创建的。

您有多个要继承的实体上下文的具体原因吗?是的,我的通知实体放置在框架程序集中,用户可以在自己的项目中添加自己的通知派生。因此,通知放在例如SchemaA中,用户将其派生放在CustomerSchemaA中。这是计划,但我不知道EF是否支持。