ASP.NET帮助将数据插入规范化的SQL表中

时间:2015-03-16 21:20:48

标签: sql asp.net normalization crud

您好我最常见的情况是将客户订单插入我的SQL数据库。我在db中创建了一个订单头和订单明细表,我试图插入一个头记录和与该头记录对应的多个明细行(PK和FK约束是headerID)。

目前,我插入我的标题记录,然后在db中查询最后创建的headerID,并使用该ID通过循环遍历网格来插入我的详细信息行。

我知道这是将记录插入规范化表格的愚蠢方式,并且进行了额外的sql调用,这似乎是不必要的。因此,任何人都会知道这个问题的更好解决方案。

1 个答案:

答案 0 :(得分:0)

我发现使用Entity Framework解决了这个问题,无需额外的努力来搜索最后一个插入标题,然后插入到详细信息表中。因此,如果在实体框架中很好地定义了关系,那么框架将负责此过程。例如:

using (var rep = new Repo()){
     Header hd = new Header();
     hd.name = "some name";


     Detail dt = new Detail();
     dt.itemname = "some item name";
     hd.Details.Add(dt);

     rep.Headers.Add(hd);
     rep.savechanges();
}

所以只要在正确插入rep.savechanges();主/明细数据之前完成所有操作。

但是,如果EF发现完整性错误或任何其他错误,则根本不会插入任何数据。

所以这是将主/详细数据插入SQL数据库的一种很好的简洁方法。