C# 表每类型继承插入问题

C# 表每类型继承插入问题,c#,.net,entity-framework-4,C#,.net,Entity Framework 4,我接着为我的实体创建了一个每类型表继承模型,但遇到了一些问题。下面我将在一个最小的环境中发布一些步骤来重现我遇到的问题,以排除其他因素 首先,我创建了一个新的MS SQL Server 2008 R2数据库,其中包含以下两个表: 使用者 Id:bigint PK并将其设置为标识列 名称:nvarchar25不为NULL,任意,某些随机属性 客户 Id:bigint PK、identity column和FK on Users.Id 标题:nvarchar25不为空也无所谓,一些随机属性 接下来,

我接着为我的实体创建了一个每类型表继承模型,但遇到了一些问题。下面我将在一个最小的环境中发布一些步骤来重现我遇到的问题,以排除其他因素

首先,我创建了一个新的MS SQL Server 2008 R2数据库,其中包含以下两个表:

使用者 Id:bigint PK并将其设置为标识列 名称:nvarchar25不为NULL,任意,某些随机属性 客户 Id:bigint PK、identity column和FK on Users.Id 标题:nvarchar25不为空也无所谓,一些随机属性 接下来,我从数据库生成了.edmx实体模型,并逐字跟踪顶部的链接。也就是说,我删除了User和Customer之间的关联,将User设置为Customer的基类,从Customer实体中删除了Id属性,并确保Customer.Id列映射到继承的User.Id属性。然后我运行了以下小程序:

using (var db = new EF_Test.testEntities())
{
    var cust = db.Users.CreateObject<Customer>();
    db.Users.AddObject(cust);
    db.SaveChanges();
}
我在最后一次通话时出现以下错误:

在多个位置生成跨实体或关联共享的值。检查映射是否未将EntityKey拆分为多个存储生成的列

除了以下内部异常:

已添加具有相同密钥的项


关于我可能遗漏的内容,你有什么想法吗?

在谷歌上快速搜索错误消息,发现了以下解决方案,也许它可以帮助你:

我想我知道了。这个 参与方子类型的表具有 “键”列设置为自动生成键 值,并且由于它是派生的 希望显式设置该值

那么,您是否尝试过从customer表中删除标识设置?所以它不会自动生成主键


希望这有帮助。

为什么不想将外键UserId作为单独的列?也许它能帮助你。
还可以尝试使用模型优先的方法,并在模型创建后生成db,如下所述

我终于找到了麻烦的根源。对于那些仍然感兴趣的人,在Customers表中,Id列不应该被设置为表PK的identity列,但是FK依赖项是可以的。

特别是MrDaveM在2010年2月23日星期二下午2:53发表的文章:是的,我尝试过,但是我得到了一系列新的异常。我现在不在家检查异常是什么,但这是一种无法显式为标识列赋值的方法。当我回来时,我会检查实际的例外情况。在这种情况下,@Peter的答案是正确的,因此出于礼貌,你应该接受他的答案。的准确副本