【发布时间】:2018-04-12 19:58:17
【问题描述】:
我有一个 LINQ 查询,它从 2 个表中检索值:
Dim query = From t1 In context.table1
Join t2 In context.table2
On t1.ID Equals t2.ID
Select t1, t2
table1 有一个table2 类型的未映射属性,我想使用选定的t2 值填充它。
我尝试过使用以下方法:
For Each val In query.AsEnumerable()
val.t1.t2property = val.t2
Next
当我运行代码时,t2property 没有被填充(可能是由于延迟加载导致查询未加载(请在此处更正我)。
增加的复杂性是我必须将此查询用作另一个数据库查询中的源列。
有没有办法在初始查询中从select 填充未映射的t2property?
或者我可以做些什么来分配val.t1.t2property = val.t2?
【问题讨论】:
-
如果使用数据库,是否需要
context.SubmitChanges()更新数据库?如果您使用的是 EF,您的t2property应该已经包含正确的t2并为您处理连接。 -
@NetMage 我使用的表格仅供参考。目的是允许应用程序进行一些计算,然后将计算的信息放入数据库中的不同表中。我正在使用 EF,但 t2property 没有映射到数据库(它是在事后添加到表模型中的),所以它不是由查询填充的。因此,t2 属性最终为空,并且 t2 填充了所需的值。
-
你怎么知道
t2property没有被填充?在for each循环之后,您如何访问t2property? -
因为在循环之后我在另一个查询(query2)中使用了查询,当我查看来自 query2 的结果时,t2property 为空。
标签: vb.net linq linq-to-entities