EF4、SQLite、TPT 层次结构和批量插入问题

发布于 2024-10-29 05:08:20 字数 614 浏览 0 评论 0原文

我在使用 EF4 和 SQLite ADO.NET 提供程序时遇到了以下问题:

我有一个具有 TPT 层次结构的模型:有一个抽象基本实体(源),然后是第一级子实体(SingleSource 和 MultipleSource) )和第二级子实体(例如 SingleSource 下的 FileSource)。

在我的应用程序中,我正在创建 FileSource 对象,并将它们添加到我的上下文中。只要我在新 FileSource 的每次 Add 操作之后调用 context.SaveChanges() ,一切都会正常工作,但是当我将多个 FileSource 添加到上下文中,然后调用 SaveChanges 一次来保存它们时,我会收到更新异常:

无法确定 FK_Source_SingleSource_0 关系的主体端。 多个添加的实体可能具有相同的主键

我注意到,当我创建新的 FileSource 对象时,EF 将所有实体的 Id 设置为 0,即使它是一个身份字段(SSDL 和 CSDL 上的 StoreGeneratePattern=Identity),我怀疑这就是它失败的原因,但我还没有找到任何解决方案,所以任何帮助将不胜感激。

谢谢,

西蒙

I've been struggling for a little while with the following issue using EF4 and SQLite ADO.NET provider:

I have a model with a TPT hierarchy: There is an abstract base entity (Source), then first level child entities (SingleSource and MultipleSource), and 2nd level child entities (e.g. FileSource under SingleSource).

In my application I'm creating FileSource objects, and adding them to my context. As long as I call context.SaveChanges() after each Add operation of a new FileSource, everything works fine but when I add several FileSources to my context and then call SaveChanges once to save them all, I get an update exception:

Unable to determine the principal end of the FK_Source_SingleSource_0 relationship.
Multiple added entities may have the same primary key

I've noticed that when I create new FileSource objects, EF sets their Id to 0 for all of them even though it's an identity field (StoreGeneratedPattern=Identity on both SSDL and CSDL) and I suspect that's the reason why it's failing but i couldn't find any solution yet so any help would be greatly appreciated.

Thanks,

Simon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文