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# OData:使用ODataConventionModelBuilder映射继承的密钥_C#_Entity Framework_Odata_Asp.net Web Api2_Odata V4 - Fatal编程技术网

C# OData:使用ODataConventionModelBuilder映射继承的密钥

C# OData:使用ODataConventionModelBuilder映射继承的密钥,c#,entity-framework,odata,asp.net-web-api2,odata-v4,C#,Entity Framework,Odata,Asp.net Web Api2,Odata V4,拥有这些: class Base { public int ID {get;set;} } class DerivedA : Base { } class DerivedB : Base { } ... 然后我可以这样设置公共主键: builder.EntityType<Base>().HasKey(m => m.ID); 我确实相信这些忽略最终会以某种方式相互重叠。我只是不能为每一个都微调一个忽略块。到目前为止,唯一有效的方法是将ID属性重新定义为每个派生类的新

拥有这些:

class Base
{
  public int ID {get;set;}
}

class DerivedA : Base
{
}

class DerivedB : Base
{
}

...
然后我可以这样设置公共主键:

builder.EntityType<Base>().HasKey(m => m.ID);
我确实相信这些忽略最终会以某种方式相互重叠。我只是不能为每一个都微调一个忽略块。到目前为止,唯一有效的方法是将ID属性重新定义为每个派生类的新属性,这几乎违背了基类的全部目的


关于这方面有什么提示吗?

有很多需要思考的地方,我在许多尝试和错误中没有看到的一个遗留问题是,除了基类的ID映射之外,我还为派生类映射了相同的ID:

builder.EntityType<Base>().HasKey(m => m.ID);
...
(in another class far far away)
builder.EntityType<DerivedA>().HasKey(m => m.ID);
builder.EntityType<DerivedB>().HasKey(m => m.ID);
builder.EntityType().HasKey(m=>m.ID);
...
(在遥远的另一个班级)
builder.EntityType().HasKey(m=>m.ID);
builder.EntityType().HasKey(m=>m.ID);
我删除了派生类上的键映射,只在基类上保留了键映射,一切正常。所以我想这和我无关

这是一条多么神秘、通用的错误消息


我更新了这些新信息,请查看它以了解更多信息,包括如何忽略派生类型。

能否提供更清晰的详细信息?“身份证”在哪里?谁拥有?我只看到一个“键”属性。哦,对不起,输入错误。我更新了问题。
builder.EntityType<Base>().HasKey(m => m.ID);
...
(in another class far far away)
builder.EntityType<DerivedA>().HasKey(m => m.ID);
builder.EntityType<DerivedB>().HasKey(m => m.ID);