gpt4 book ai didi

c# - 每个类型的表继承插入问题

转载 作者:行者123 更新时间:2023-12-02 01:20:45 25 4
gpt4 key购买 nike

我关注了this article为我的实体制作每个类型的表继承模型,但我遇到了一些问题。下面我发布了在最小环境中重现问题的步骤,以排除其他因素。

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

用户

  • Id : bigint(PK 并将其设置为标识列)
  • 名称:nvarchar(25) NOT NULL(无论如何,一些随机属性

客户

  • Id :bigint(Users.Id 上的 PK、身份列和 FK)
  • 标题:nvarchar(25) NOT NULL(也可以,一些随机属性)

接下来,我从数据库生成了 .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 拆分为多个存储生成的列。”

有以下内部异常:

“已添加具有相同 key 的项目。”

关于我可能会错过什么的任何想法?

最佳答案

快速谷歌一下错误消息,找到了以下解决方案,也许对您有帮助:

http://social.msdn.microsoft.com/Forums/en/adodotnetentityframework/thread/4bfee3fd-4124-4c1d-811d-1a5419f495d4

I think that I figured it out. The table for the Party sub type had its key column set to autogenerate a key value and since it's derived, the EF wanted to set that value explicitly.

那么您是否尝试过从客户表中删除“身份”设置?那么它不会自动生成主键?

希望这有帮助。

关于c# - 每个类型的表继承插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4859718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com