现在有三张表,分别为 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表,应该怎么实现呢。
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表,应该怎么实现呢。
public virtual List<user_role> user_role_List
还有这个也很关键
除了缺少 foreignkey还有key的属性标签。
基本model就是你要生成的code first样子。
至于之后怎么弄充血模型。你根据自己的业务去封装行为到viewmodel
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; }
}
1 新增role时,把外键值,赋给role
2 直接在user.role中新增这个role
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