就像标题所说的那样,我有以下异常(exception):
我正在使用LINQ to SQL,并且在我的datacontext中具有以下代码:
var friends2 = (
from f in dc.Friends
where f.MyFriendsAccountId == accountId
where f.AccountId != accountId
select new
{
f.FriendId,
AccountId = f.MyFriendsAccountId,
MyFriendsAccountId = f.AccountId,
f.CreateDate,
f.Timestamp
}).Distinct();
result.AddRange(
from o in friends2
select new Friend()
{
FriendId = o.FriendId,
AccountId = o.AccountId,
CreateDate = o.CreateDate,
MyFriendsAccountId = o.MyFriendsAccountId,
Timestamp = o.Timestamp
});
最后的代码块抛出错误,我很确定这是该语句
罪魁祸首:
.Select( o => **new Friend**
我应该如何修改我的代码以避免此错误?
最佳答案
不能使用LINQ查询创建属于数据上下文的实体。这是C#团队精心设计的决定。因为实体是在Select
语句中(手动)更新的,所以这意味着DataContext
不会跟踪它们,这会使开发人员感到困惑。另一方面,当DataContext在提交时自动插入那些新创建的实体时,这也会造成困惑。剩下的唯一选择就是与开发人员沟通,这不是一个好主意,这就是您所看到的。
关于c# - 不允许在查询中显式构造实体类型[MyClass],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2952856/