现在有三张表,分别为 user 、role、user_role。
user: id、name;  id为主键
role: id、name;   id为主键
user_role:  id、user_id、role_id;  id为主键,后两个字段都为外键。
一个user可以有多个role。类有
user
{
  public int Id { get; set;}
  public string name { get; set; }
  public List<user_role> user_role_List { get; set; }
}role
{
  public int Id { get; set;}
  public string name { get; set; }
  public List<user_role> user_role_List { get; set; }
}user_role
{
  public int Id { get; set;}
}Dbcontext
{
  public DbSet<user> { get; set; }
  public DbSet<role> { get; set; }
  public DbSet<user_role> { get; set; }
}
 我现在想关联出user和role表,应该怎么实现呢。

解决方案 »

  1.   

    你要设置主外键,ForeignKey
    public virtual List<user_role> user_role_List
    还有这个也很关键
      

  2.   

    其实你用ef,生成一下 db first。看一下大致的Model就知道了。
    除了缺少 foreignkey还有key的属性标签。
    基本model就是你要生成的code first样子。
    至于之后怎么弄充血模型。你根据自己的业务去封装行为到viewmodel
      

  3.   

    下面给个例子,员工和公司关系//员工表
    public partial class WD_Employee
        {
            public WD_Employee()
            {
                
            }        [Key]
            public int id { get; set; }
            public string account { get; set; }
            public string name_CN { get; set; }
            public string name_EN { get; set; }
            public string pwd { get; set; }
            [ForeignKey("WD_CompanyInfo")]
            public int CompayInfoId { get; set; }
                    public virtual WD_CompanyInfo WD_CompanyInfo { get; set; }    }//公司表
    public partial class WD_CompanyInfo
        {
            public WD_CompanyInfo()
            {
                
                this.WD_Employee = new HashSet<WD_Employee>();
                
            }        [Key]
            public int id { get; set; }
            public string name_CN { get; set; }
            public string name_EN { get; set; }
                    public virtual ICollection<WD_Employee> WD_Employee { get; set; }
            
        }
      

  4.   

    https://www.cnblogs.com/redfull/p/6593137.html
      

  5.   

    现在如果想要在user下的role中新增一条数据,应该怎么做,每次写完role 的外键总是null
      

  6.   

    两个方法
    1 新增role时,把外键值,赋给role
    2 直接在user.role中新增这个role
      

  7.   

    两个方法
    1 新增role时,把外键值,赋给role
    2 直接在user.role中新增这个role
    当时是在给外键赋值的时候出的错 因为role中外键字段是ef通过public List<user_role> user_role_List { get; set; }自动生成的,所以当时没有办法选中到这个字段
    后来找到的方法是这样的 代码如下
    var db = new Context();
                var orderList = db.Orders.Include(x => x.OrderTask)
                    .SingleOrDefault(x => x.OrderNo == orderNo);
                if (orderList == null)
                    return JsonError("要添加的任务所属订单不存在");            var orderTask = db.OrderTasks.SingleOrDefault(x => x.OrderTaskNo == orderTaskNo);
                if (orderTask != null)
                    return JsonError("任务号重复");
                orderTask = new OrderTask
                {
                    OrderTaskNo = orderTaskNo,
                    OrderTaskName = orderTaskName,
                    OrderTaskStatus = orderTaskStatus
                };
                orderList.OrderTask.Add(orderTask);
                db.SaveChanges();
                return JsonOkays("操作成功");这里的订单 相当于 user 任务相当于role