我正在使用MVC webform将记录插入到具有多个子记录的数据库中。在我的代码隐藏中,我首先使用dataRepository.Add(xx)创建一个新的主记录。现在我需要添加5个需要新创建记录的ID的子记录。我该如何检索?
答案 0 :(得分:24)
假设xx是您的模型,并且其主键是Id,您可以像这样获得插入记录的ID:
// at this point xx.Id == null
db.XX.AddObject(xx);
db.SaveChanges();
// now: xx.Id > 0
int id = xx.Id;
答案 1 :(得分:2)
如果您正在使用ORM(如Entity Framework),您应该能够创建记录和相关记录,通过将相关记录添加到主对象的集合中或以某种方式设置它们来链接它们,然后调用save方法在上下文中。这将为你做所有与id等的链接。
您是如何进行数据访问的?
答案 2 :(得分:1)
您应该将所有5条记录加上主要记录一直提交到数据层,然后在业务层的路上执行任何验证。然后,根据DL的实现,保存主记录,返回ID,在子记录上设置父ID并保存。在一次交易中完成所有工作,你应该没问题。
请提供有关您的数据访问层的更多信息。
如果使用MS SQL Server,则可以使用存储过程中的 Scope_Identity()来获取插入标识列的最后一个标识值。见MSDN article
如果使用 NHibernate ,则在同一会话中添加它们,NHibernate负责生成负责插入具有正确ID的记录的SQL。