現在有三張表,分別為 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表,應該怎么實作呢。
uj5u.com熱心網友回復:
導航屬性。。。。。uj5u.com熱心網友回復:
具體怎么樣實作呢,網上的大多數都是直接通過兩表保存的欄位匹配鏈接,很少通過映射表查詢關聯的。uj5u.com熱心網友回復:
你要設定主外鍵,ForeignKeypublic virtual List<user_role> user_role_List
還有這個也很關鍵
uj5u.com熱心網友回復:
其實你用ef,生成一下 db first。看一下大致的Model就知道了。除了缺少 foreignkey還有key的屬性標簽。
基本model就是你要生成的code first樣子。
至于之后怎么弄充血模型。你根據自己的業務去封裝行為到viewmodel
uj5u.com熱心網友回復:
下面給個例子,員工和公司關系
//員工表
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; }
}
uj5u.com熱心網友回復:
https://www.cnblogs.com/redfull/p/6593137.htmluj5u.com熱心網友回復:
現在如果想要在user下的role中新增一條資料,應該怎么做,每次寫完role 的外鍵總是nulluj5u.com熱心網友回復:
兩個方法
1 新增role時,把外鍵值,賦給role
2 直接在user.role中新增這個role
uj5u.com熱心網友回復:
當時是在給外鍵賦值的時候出的錯 因為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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/133771.html
標籤:C#
上一篇:C#顯示GPS經緯度
下一篇:急,求解
