【发布时间】:2013-01-06 18:02:30
【问题描述】:
我用 linq to sql 有一段时间了,经常遇到这类问题....
例如 我有 2 个数据库表
-表格:发票(“Id”int 自增,“InvoiceDate”日期时间)
-Table: InvoiceItems ("Id" int auto-increment, "InvoiceId" int (FK), "SomeReference" varchar(50))
“SomeReference”字段包含一个值,该值是父发票记录中的 Id 和一些随机字符的组合。例如。 “145AHTL”
在我可以设置 SomeReference 的值之前,我需要知道 Invoice Id 的值,但这只有在保存到数据库时才会填充。我在同一个 Linq to SQl DB 上下文中有父记录和子记录,但我只想对父 Invoice 记录执行“SubmitChanges”,这样我就可以在子记录中填充 SomeReference。我不想在设置 SomeReference 之前将子 InvoiceItem 记录保存到数据库中。
如何使用 Linq to Sql 实现这一点?
我知道 linq to sql 使用“工作单元”的想法来保存到数据库,但我不明白如何避免在尚未准备好保存记录时将它们不必要地保存到数据库。如果没有办法解决这个问题,那么为什么开发人员还要使用 linq to sql,因为这似乎是一个巨大的缺点?
编辑:应该注意,这个例子只是我想出来帮助描述我的问题。
【问题讨论】:
-
为什么不保存发票,获取id,然后创建并保存项目? (我也觉得存储两次 ID 很奇怪)
-
您能否分享一下您是如何将数据从
Invoice保存到InvoiceItems表的代码? -
这意味着在将父对象保存到数据库之前,我无法将父对象映射/链接到子对象。
标签: c# .net sql sql-server linq-to-sql