使用Linq to SQL添加相关项

时间:2011-01-07 22:11:31

标签: c# linq-to-sql

我有一个包含'transactions'和'transaction_lines'的数据库。事务具有基本共享详细信息,事务行包含组成事务的组件的值。在传统的SQL中,我使用SQL事务(对不起,我们现在有一个含糊不清的词......)然后我会INSERT INTO事务...从事务表中的新行获取IDENTITY键值,然后插入到我的transaction_line表中,使用Transaction表中的标识列作为外键。

使用linq有一个很好的方法吗?

这是我到目前为止所拥有的:

account_transaction ac = new account_transaction
                             {
                                 transaction_date = DateTime.Now,
                                 is_credit = isCredit,
                                 account = (db.accounts.FirstOrDefault(a => a.account_id == accountid))
                             };

db.AddToaccount_transaction(ac);

db.SaveChanges();

我认为在'AddToaccount_transaction(ac)'和'db.SaveChanges()'之间,我需要添加我的transaction_lines。

2 个答案:

答案 0 :(得分:1)

您应该能够创建新的transaction_line个对象并将外部实体设置为ac。在LINQ-to-SQL中,您使用实体对象而不是显式键。通过将实体对象设置为ac对象,您将指示图层确定密钥是什么并为您设置。

答案 1 :(得分:1)

上面的答案是正确的,但我会将它全部包装在TransactionScope中。这样,如果该查询的任何部分失败,它将回滚事务。只需记住在关闭连接之前调用scope.Complete()方法。 http://msdn.microsoft.com/en-us/library/ms251686(VS.80).aspx