就像标题所说的那样,我有以下异常(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/

10-11 09:21