使用LINQ向EntityCollection添加多个项
本文关键字:添加 EntityCollection LINQ 使用 | 更新日期: 2023-09-27 18:25:55
我正在尝试将EntityCollection
属性(v.TPM_USER2
)设置为数据库中的用户子集。我有一个数组view.DNs
,其中包含要添加的用户名列表。我可以用
if(view.DNs != null && view.DNs.Length > 0)
{
var users = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
foreach (var u in users)
{
v.TPM_USER2.Add(u);
}
}
这很好,但我有一种感觉,有一种方法可以用一行代码做到这一点。我试过:
v.TPM_USER2 = (from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
导致错误的原因:
错误78无法隐式转换类型"System.Linq.IQUERABLE"到'System.Data.Objects.DataClasses.EntityCollection
我也尝试过使用ToArray()
,但没有任何运气。有办法做到这一点吗?
更新:
我也试过:
v.TPM_USER2.Attach(from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
编译,但生成运行时错误:
当与关联的源对象此相关端处于添加、删除或分离状态。对象使用NoTracking合并选项加载的总是分离的。
v.TPM_User2.AddRange(users);
编辑:这是针对EntitySet
的——看起来你可能会被前臂卡住。或者,如果您只想在一行中进行循环,您可以编写自己的AddRange
扩展方法来为您进行循环。