问题标签 [entitykey]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 2 个 EntityKeys 时的实体框架插入错误
以下是我遇到的错误示例。代码名称等已更改以使其更具可读性,并且已“简化”以仅显示我遇到问题的部分。
表结构:
概括
我正在尝试使用 Entity Framework 3.5 添加一个新的 CHILD 项目和一个 ADDRESS,当我在此过程中使用 2 个 entitykey 引用时出现重复输入错误。
代码努力
首先,我在创建实体时尝试使用父引用:
如果我尝试引用两个外键,这将不起作用;但是,如果我只是尝试引用其中一个,它就可以正常工作。第一个将始终有效。第二个将给出错误。它们的顺序无关紧要。如果我自己使用它们或像这样以其他方法使用它们,它们就可以正常工作。
我还尝试获取实际项目,而不仅仅是参考,例如:
而且,在发现类似错误后,我尝试使用 .Attach() 方法:
当我以第一种方式(我的首选方式)执行此操作时,首先添加的任何项目都可以正常工作。当我尝试第二个时,出现错误(已添加具有相同密钥的项目)。如果我尝试通过提取实际记录而不是仅使用参考来做到这一点,我会直接从 SQL Server 2005 数据库中获得相同类型的错误。
在阅读了这一点之后,它与 Context 以及代码可能引用了父记录的 2 个不同版本的事实有关,这是有道理的;但是,我找不到解决它的好方法。
最后我要做的就是插入一个带有新地址的子记录。子记录必须引用父记录,地址记录必须引用省记录。最好,我想通过引用来减少 sql 事务。
谢谢!
编辑
试图创建我自己的 2 个单独的 entityKey 对象和 2 个单独的 EntityReference<> 对象,现在当我尝试使用第二个 EntityReference<> 对象分配关系/引用时出现以下错误:
无法初始化 EntityReference,因为实体引用所属对象的关系管理器已附加到 ObjectContext。
编辑
使用不需要来自 Alex 的回答中的任何关系/参考信息的解决方法:Entity Framework EntityKey / Foreign Key problem
我仍然不希望使用它,因为它迫使您必须检查上下文中已有的信息,然后它会创建“假”记录以通过它作为解决方法。如果有人有更多信息,我很想听听!
.net - 未生成临时 EntityKey
我正在创建一个在数据库(SQLite)中不存在的新 EntityObject。我填充对象的属性并将其加入父对象。我没有填充主键属性,因为据我了解,EF 应该自动为我生成一个临时 EntityKey。然后我使用 AddObject 方法将新创建的 EntityObject 添加到上下文中,然后调用 SaveChanges。
我收到 UpdateException: Abort 由于违反约束 PRIMARY KEY 必须是唯一的。我看到主键属性始终设置为 0,尽管它应该是数据库中的下一个可用值,对吗?我检查了数据库中的主键字段是自动递增的。
我应该怎么做才能让 EF 给我一个临时 EntityKey?
c# - SqlQuery EntityKey 并返回对应对象
我想根据 EntityKey 查询我的数据库是否有内置(或更简单的方法)来执行此操作?
我目前的方法是这样的:
(此解决方案目前存在问题,EntitySetName 不是 TableName,我需要从 MetaData 中获取 TableName,与 Id 的名称相同,它也可能与数据库不同)
或者有没有办法用 LINQ 做到这一点?(我更喜欢,因为我不需要手动翻译)
.net - 如何告诉 Breeze 哪个属性是实体键
如果我有一个 POCO-Object(与 EF 或任何其他框架无关),它看起来如下(来自 NoDb-Example):
Breeze 如何知道,或者我如何告诉 Breeze,TodoItemId 是 EntityKey?我是否必须手动处理“元数据”(http://www.breezejs.com/documentation/metadata-hand-depth)?我目前不太了解如何配置/影响 EntityKey-Concept。
我可以使用某种 .NET-Attribute 吗?我在服务器端使用 .NET-Framework 4.5 和 Web API。
c# - 手动设置EntityKey而不访问数据库
在我的应用程序(数据库优先)中,主键始终由客户端创建,而不是由底层数据库创建。
在 Entity Framework v4 中,每个Entity
都有EntityKey
可以手动设置的属性。
但是,我在 EF6 中找不到它了?
有什么具体原因吗?
我不想ctx.SaveChanges()
只调用一个Entity's
键集,因为这意味着调用数据库。
我也想知道为什么ObjectContext.CreateEntityKey
没了?!