如何在多个事务中通过linq on database执行crud操作?

时间:2013-08-07 09:03:42

标签: c# linq

我以前从未使用它,现在我需要通过inq to database

执行crud操作

我有3个集合,我想在数据库中推送3个不同的表。

所有三个集合都属于一个界面以显示那里

我想知道应该如何执行更新和添加新操作。就像在simele sqlcommand之类的语句我正在使用具有更新存储过程的单个保存方法并检查它是否添加新的新项目或者它是否在编辑中因此如果创建了新条目,则第一个表返回它指定给我的主要其他的一个集合,并以同样的方式推动它。

我关心的是如何在这里做同样的事情,如果一个新的条目被推送到数据库,主键应该返回,我可以映射到其他集合的属性?

1 个答案:

答案 0 :(得分:1)

从评论中,您正在使用LINQ-to-SQL;在这种情况下,ORM为您处理此 。例如:

var cust = new Customer();
ctx.Customers.InsertOnSubmit(cust);
cust.Orders.Add(new Order { Quantity = 1, Part = "abc" } );
cust.Orders.Add(new Order { Quantity = 1, Part = "def" });
ctx.SubmitChanges();

当您致电SubmitChanges时,ORM将处理:

  • 执行必要的插入和更新
  • 更新任何对象上的任何必要元数据(标识,rowversion等)

所以 - 在致电SubmitChanges之后,您应该看到cust已经获得了它应该拥有的任何身份。特别要注意的是,在添加Order等时,我添加了对象,而不是身份。这是必要的,因为我们还没有知道身份。另请注意,这使用单个事务。