我试图将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.IQueryable'至 ' System.Data.Objects.DataClasses.EntityCollection
我也试过使用ToArray()
而没有任何运气。有没有办法做到这一点?
更新
我也尝试过:
v.TPM_USER2.Attach(from u in context.TPM_USER where view.DNs.Contains(u.DN) select u);
编译,但会生成运行时错误:
当源对象关联时,Attach不是有效操作 此相关端处于添加,删除或分离状态。对象 使用NoTracking合并选项加载的内容始终是分离的。
答案 0 :(得分:1)
v.TPM_User2.AddRange(users);
修改:那是EntitySet
- 看起来你可能会被foreach困住。或者,您可以编写自己的AddRange
扩展方法,以便在您专门执行一行时为您执行循环。