在LINQ中添加相关记录

时间:2009-03-12 09:39:39

标签: vb.net linq linq-to-sql

使用LINQ处理XML文件,以通过数据上下文将记录添加到SQL Server数据库的表中。当我们添加记录时,我们需要在其他各种表中分配父项。大多数情况下,我们可以找到现有的父级并使用它,但有时我们需要创建一个新的父级。

我们可以这样做:

Dim defaultPub As publication
defaultPub = New publication With {.name = e..Value}
Dim pub = _Data.publications.Where(Function(s) s.name = e..Value).DefaultIfEmpty(defaultPub).SingleOrDefault
.publication = pub

所以我们试图找到一个与我们的XML匹配e..Value的出版物,但是如果我们找不到,那么我们使用'defaultPub'。如果确实存在,但我们不想再添加它。所以,即使它确实有效,也许这种方法存在缺陷......

无论如何它目前无法正常工作,我们收到此错误: 用于查询运算符'DefaultIfEmpty'的不支持的重载。

重载需要一个发布并且正在获取一个(我已经在quickwatch中检查了TypeNames),不知道这里发生了什么。

我们真正需要的是类似于来自activerecord for Ruby的find_or_create,LINQ似乎是从中复制的。

提前致谢,

戴夫。

1 个答案:

答案 0 :(得分:-1)

好的,我可以这样做:

Dim pub = _Data.publications.Where(Function(s) s.name = e.<source>.Value).SingleOrDefault
Dim newPub As publication
If Not IsNothing(pub) AndAlso pub.name <> "" Then
   .publication = pub
Else
   newPub = New publication With {.name = e.<source>.Value}
   .publication = newPub
End If

感谢Val!

相关问题