道歉,如果某处有明确的答案。但由于它包含一个外键,我无法插入到一个简单的表中。
我试着像这样插入:
Task t = new Task();
t.Id = 1234;
t.Title = "foo";
t.Status = db.Status.ToList().First();
但是得到updateException错误: 正在从AssociationSet'FK_Task_Status'添加或删除关系。对于基数约束,还必须添加或删除相应的“任务”。 的
如何插入此表?
干杯
...
找到我的问题......
我的架构错了。当我创建我的外键时,我将它指向错误的字段。看看SQL分析器,看到了这个:
选择 1 AS [C1], [Extent1]。[Id] AS [Id], [Extent1]。[Descr] AS [Descr], [Extent2]。[Id] AS [Id1] FROM [dbo]。[Status] AS [Extent1] LEFT OUTER JOIN [dbo]。[任务] AS [Extent2] ON [Extent1]。[Id] = [Extent2]。[Id]
应该是这个(加入statusId而不是id):
选择 1 AS [C1], [Extent1]。[Id] AS [Id], [Extent1]。[Descr] AS [Descr], [Extent2]。[Id] AS [Id1] FROM [dbo]。[Status] AS [Extent1] LEFT OUTER JOIN [dbo]。[任务] AS [Extent2] ON [Extent1]。[Id] = [Extent2]。[StatusId]
傻傻的我;)
答案 0 :(得分:2)
Task t = new Task();
t.Id = 1234;
t.Title = "foo";
t.StatusId = 5678;
答案 1 :(得分:0)
使用“Entity Framework 1.0”(直到今天,最新的版本)你有正确的想法 - 从数据库获取状态以在任务上设置。你确定你实际上正在使用上面使用的语法获得Status实体吗?
逐步执行代码以确保将Task实体上的引用设置为实际的物化状态实体。
答案 2 :(得分:0)
你可以尝试
Task t = new Task();
t.Id = 1234;
t.Title = "foo";
t.Status.EntityKey = new EntityKey("tblStatus","StatusId",t.StatusID);
希望这会有用