微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建新记录时,实体框架不会设置FK

如何解决创建新记录时,实体框架不会设置FK

|| 我正在尝试通过实体框架在以下概念模型中向现有标头添加Line。 我已经通过wcf数据服务公开了此模型。我试图添加这样的记录:
SampleModelContainer context = new SampleModelContainer(new Uri(\"http://localhost:57588/WcfDataService1.svc\"));

Line newLine = new Line();
newLine.item = 123;

// Generate new LineId
newLine.LineId = context.Lines.ToList().Last().LineId + 1;

// Grab a random header (doesn\'t matter right Now)
newLine.Header = context.Headers.ToList().First();

context.AddToLines(newLine);            
context.SaveChanges();
这将失败,并显示一条错误消息,指出我的HeaderId不能为null。但是,由于我设置了导航属性,因此EF不应填写吗?如果我填写HeaderId,它可以工作,但是我不想每次都设置它。 关于我在做什么错的任何想法吗? 编辑:添加了连接字符串     

解决方法

        给定您的实体数据模型,这应该可以工作:
Line newLine = new Line();
newLine.Item = 123;

// Grab a random header (doesn\'t matter right now)
var header = context.Headers.First();
newLine.Header = header; // Establish the relationship

// Add the new line
context.Lines.AddObject(newLine);
context.SaveChanges();
    ,        代替这个
newLine.Header = context.Headers.ToList().First();
做这个:
newLine.HeaderId = context.Headers.First().HeaderId;
不要尝试直接分配对象,设置适当的外键(在本例中为
HeaderId
),并让框架负责其余的工作。 编辑 请参阅BrokenGlass的答案。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?