【问题标题】:ASP.NET help inserting data into normalized SQL tables best practiceASP.NET 帮助将数据插入规范化 SQL 表的最佳实践
【发布时间】:2015-05-19 04:13:11
【问题描述】:
您好,我最常见的情况是将客户订单插入我的 SQL 数据库。我在数据库中创建了一个订单标题和订单详细信息表,我正在尝试插入一个标题记录和多个与该标题记录对应的详细信息行(PK 和 FK 约束是 headerID)。
目前,我插入我的标题记录,然后在数据库中查询最后创建的 headerID 并使用该 ID 通过例如循环网格来插入我的详细信息行。
我知道这是一种将记录插入规范化表的愚蠢方法,并且进行了额外的 sql 调用,这似乎没有必要。因此,有谁知道这个问题的更好解决方案。
【问题讨论】:
标签:
sql
asp.net
normalization
crud
【解决方案1】:
我发现使用 Entity Framework 解决了这个问题,无需额外的努力去搜索最后插入的 headerid,然后将它插入到详细表中。因此,如果在实体框架中明确定义了关系,则框架会处理此过程。例如:
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 数据库的好方法。