实体框架3.5SP1以错误的顺序插入

时间:2011-04-28 10:14:53

标签: c# .net entity-framework

引用Alex James的回答Row insertion order entity framework

  

您在上下文中执行操作的顺序可能与这些规则冲突。例如,如果你这样做:   ctx.AddToProducts(新产品{Name =“Bovril”,Category = new Category {Name =“Food”}});

     

但由于参照完整性约束,我们必须在尝试插入数据库之前重新排序:
  分类
  产品

我的问题是我的代码突然以错误的顺序插入项目,即:

  

产品
  类别

这是非常错误的 大家可以告诉我在哪里需要查看来解决这个问题吗?我确信我的Category表没有任何其他表的FK。

谢谢: - )

编辑:广泛的试验和错误每次修订都告诉我,这是因为edmx文件中的关联数据被意外删除了! 谢谢大家帮助我: - )

2 个答案:

答案 0 :(得分:1)

Maybe there's something wrong with the universe, but probably not。由于它曾经工作,问题显然在你的代码中。

因此,首先要消除所有因素。例如。写一个插入类别和产品的小测试,保存。从那里开始工作:如果失败,监视生成的SQL,仔细检查数据库模式,验证实体框架模型(存储模型,映射,对象模型)。

如果第一次测试成功,请查看与实际代码的差异。添加代码,直到它再次开始失败。

系统地工作,最终你会发现错误。

答案 1 :(得分:1)

Insert into Customer_Receipt_Table
(
    MemAsso_Code,MAName,Allotmentno,Name,SchemeName,
    InstallmentAmount,InstallmentNo,ModeOfPay,
    CU_Date,VaucharNo,Date
) 
values
(
     '" + lblintroducerid.Text + "',
     '" + lblmaname.Text + "',
     '" + lblallotmentno.Text + "',
     '" + lblname.Text + "',
     '" + lblScheme.Text + "',
     '" + lblinsamnt.Text + "',
     '1',
     '" + radiobtnpayment.SelectedItem.Text + "',
     '" + DateTime.Now.ToShortDateString() + "',
     '" + txtvousherno.Text + "',
     '" + lbldate.Text + "'
);