Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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# 代码优先在表之间共享主键_C#_Asp.net_Sql Server_Entity Framework_Ef Code First - Fatal编程技术网

C# 代码优先在表之间共享主键

C# 代码优先在表之间共享主键,c#,asp.net,sql-server,entity-framework,ef-code-first,C#,Asp.net,Sql Server,Entity Framework,Ef Code First,我首先使用实体框架代码尝试创建一个数据库,在这个数据库中,我有几个表共享唯一的主键 我的域类有以下结构,希望FirstClass、SecondClass、ThirdClass都能创建为表,链接到存储共享键的基表。我在这个例子中包括了SharedClass类,因为我的项目中也有这个结构 [Table("BaseTable")] public abstract class BaseClass { public int Id { get; set; } } public abstract c

我首先使用实体框架代码尝试创建一个数据库,在这个数据库中,我有几个表共享唯一的主键

我的域类有以下结构,希望FirstClass、SecondClass、ThirdClass都能创建为表,链接到存储共享键的基表。我在这个例子中包括了SharedClass类,因为我的项目中也有这个结构

[Table("BaseTable")]
public abstract class BaseClass {
    public int Id { get; set; }
}

public abstract class SharedClass : BaseClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("FirstClass")]
public abstract class FirstClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("SecondClass")]
public abstract class SecondClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}

[Table("ThirdClass")]
public abstract class ThirdClass : SharedClass {
    public string SharePropertyOne { get; set; }
    public string SharePropertyOne { get; set; }
}
目前正在发生的事情是,第一类、第二类和第三类都在创建中,但它们都有自己的主键,并且没有创建基表


我不确定我是否遗漏了一些问题,在这里,我看了几个问题,问了一些类似的问题

默认情况下,甚至通过在基类上应用
Table
数据注释,EF继承也不会被激活

可以通过向派生的
DbContext
添加
DbSet
来激活它:

public DbSet<BaseClass> BaseClass { get; set; }
公共数据库集基类{get;set;}
这也允许您使用多态查询,或使用流畅的配置-最基本的要求是:

modelBuilder.Entity<BaseClass>();
modelBuilder.Entity();

能否显示在DbContext中定义的相关数据库集以及fluent配置(如果有)。因此,我在上下文中没有将上述类作为数据库集,因为它们都不是聚合路由,也没有fluent API配置。