gpt4 book ai didi

c# - Table-per-type 继承插入问题

转载 作者:行者123 更新时间:2023-11-30 14:40:51 25 4
gpt4 key购买 nike

我关注了this article为我的实体创建一个表类型的继承模型,但是当我尝试将子类的实例添加到数据库时出现以下错误。

这是我创建子类型的方法:

var cust = db.Users.CreateObject<Customer>(); // Customer inherits User
db.Users.AddObject(cust);
db.SaveChanges();

最后一次调用时出现以下错误:

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

有以下内部异常:

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

关于我可能遗漏的任何想法?

更新了重现步骤

创建一个空白的 MS SQL Server 2008 R2 数据库,并添加以下两个表:

用户

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

客户

  • Id : bigint(PK、标识列和 Users.Id 上的 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();
}

我遇到了与上述相同的异常。请让我知道此重现是否适合您,如果适合,请告诉我我做错了什么。我在这个问题上受阻。

最佳答案

我终于找到了烦恼的根源。对于那些仍然感兴趣的人,在 Customers 表中,Id 列不应该设置为表的标识列(不过 PK 和 FK 依赖关系没问题)。

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

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