19

エンティティフレームワークを介してグリッドビューをバインドしたいのですが、次のようなエラーがスローされます-

匿名型は、同じ名前のエンティティ Framwrok を持つ複数のプロパティを持つことはできません

これが私の方法です。

public void UserList(GridView grdUserList)
{
    using (TreDbEntities context = new TreDbEntities())
    {

        var query =( from m in context.aspnet_Membership
                    from u in context.aspnet_Users
                    join usr in context.Users
                    on new { m.UserId, u.UserId } 
                    equals new { usr.MembershipUserID, usr.UserId }
                    into UserDetails
                    from usr in UserDetails
                    select new { 
                       CreationDate = m.CreateDate,
                       email = m.Email,
                       UserName = u.LoweredUserName,
                       Name = usr.FirstName + usr.LastNameLastName,
                       Active=usr.IsActive
                    }).ToList();
    }
}

ここでエラーを示します。usr.UserId.

4

2 に答える 2

29

直接の問題は、匿名型にありnew { m.UserId, u.UserId }ます。同じ名前が 2 回あります。たとえば、次のように明示的なプロパティ名を指定することで、これを修正できますnew { u1 = m.UserId, u2 = u.UserId }

しかし、次の問題は、結合を定義する両方の匿名型が同じプロパティ名を持たないことです。したがって、最終的な修正は次のとおりです。

public void UserList(GridView grdUserList)
{
    using (TreDbEntities context = new TreDbEntities())
    {
        var query =( from m in context.aspnet_Membership
                    from u in context.aspnet_Users
                    join usr in context.Users
                    on new { u1 = m.UserId, u2 = u.UserId } 
                    equals new { u1 = usr.MembershipUserID, u2 = usr.UserId }
                    into UserDetails
                    from usr in UserDetails
                    select new { CreationDate = m.CreateDate,
                                 email = m.Email,
                                 UserName = u.LoweredUserName,
                                 Name = usr.FirstName + " " + usr.LastName,
                                 Active = usr.IsActive
                               }
                   ).ToList();
    }
}
于 2013-09-24T14:03:02.407 に答える