如何与实体框架创建外键关系?
我想在数据库中的一个具有几个外键关系的表上创建一个新行,但我无法了解需要进行什么顺序和什么调用。 这是我到目前为止所得到的:
db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();
代码在第二行失败,说:
在以下情况下附加操作无效 与此关联的源对象 相关端位于添加、删除、 或分离状态。 加载的对象 使用 NoTracking 合并选项是 始终保持独立。
有任何想法吗?
I want to create a new row in my database on a table that has a couple of foreign key relationships and I haven't been able to get a handle on what order and what calls need to be made. This is what I have so far:
db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();
The code is failing on the second line there, saying:
Attach is not a valid operation when
the source object associated with this
related end is in an added, deleted,
or detached state. Objects loaded
using the NoTracking merge option are
always detached.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
(感谢约翰修复语法)
所以我明白了。 这就是你必须做的:
我希望这对人们有帮助。
(Thanks John for the grammar fixes)
So I figured it out. This is what you have to do:
I hope that helps people.
为什么不使用实体引用? 您的方法将导致额外的
SELECT
语句。更好的方法是使用
CustomerReference
类和EntityKey
。Why not use entity references? Your method will cause an extra
SELECT
statement.A much nicer way is to use the
CustomerReference
class and anEntityKey
.这里有一些示例代码用于更新:
For update here is some sample code: