【发布时间】:2013-01-16 12:52:17
【问题描述】:
我的上下文如下所示:
public DbSet<User> Users { get; set; }
public DbSet<AccessGroup> AccessGroups { get; set; }
public DbSet<UserAccessGroup> UsersAccessGroups { get; set; }
数据库有三个表:
- 用户 [Pk = Id, ...]
- AccessGroups [Pk = Id, ...]
- UsersAccessGroups [Pk = Id, Fk = UserId, Fk = AccessGroupId, ...](还有创建者和创建时间的列)
我们有三个班级:
public class User
{
public virtual int Id { get; set; }
public virtual ICollection<UserAccessGroup> UsersAccessGroups { get; set; }
// Some more..
}
public class AccessGroup
{
public virtual int Id { get; set; }
public virtual ICollection<UserAccessGroup> UsersAccessGroups { get; set; }
// Some more..
}
[Table("UsersAccessGroups")]
public class UserAccessGroup
{
public virtual int Id { get; set; }
public virtual int UserId { get; set; }
public virtual int AccessGroupId { get; set; }
public virtual int CreatedByUserId { get; set; }
public virtual DateTime CreatedAt { get; set; }
public virtual User User { get; set; }
public virtual AccessGroup AccessGroup { get; set; }
public virtual User CreatedByUser { get; set; }
}
我希望能够使用这样的用户对象:
var user = Context.Users.Select(x => x);
var accessGroup = user.UsersAccessGroups.Select(x => x.AccessGroup).ToList();
但是第二行不起作用。我收到错误消息“无效的列名 User_Id” 当我有一对一的关系(如 CreatedByUser)时,相同的代码可以工作。
我也试过这样的:
Context.Users.Include("UsersAccessGroups")
.Include("UsersAccessGroups.AccessGroup")
.Include("UsersAccessGroups.User").Select(...);
但我遇到了同样的问题。
是否有可能让它工作,或者我必须以某种方式改变它?
【问题讨论】:
标签: entity-framework many-to-many poco