2 回答
TA贡献2039条经验 获得超7个赞
我很确定你可以通过使用 fluent api 并覆盖OnModelCreating你的 中的方法来做到这一点DbContext,但我没有手头的例子。
但是,您可能会发现为您的用户添加另一个属性更容易
public int ActiveCompanyId { get; set; }
有很多变量,例如您是否使用延迟加载、有多少公司/用户、您的数据访问模式是什么,这可能决定您的最佳整体方法。如果您的Companies属性通常或总是被填充,那么您可以创建一个get未映射的唯一属性:
public class User
{
public int Id
public virtual ICollection<Company> Companies { get; set; }
public int ActiveCompanyId { get; set; }
[NotMapped]
public Company ActiveCompany
{
get
{
return this.Companys == null ? null :
Companies.Where(x => x.Id == this.Active.CompanyId)
.SingleOrDefault;
}
}
public User()
{
this.Companies = new HashSet<Company>();
}
}
TA贡献1934条经验 获得超2个赞
你能试试这个映射吗:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.HasMany(c => c.Users)
.WithMany(u => u.Comapnies)
.Map(x =>
{
x.MapLeftKey("CompanyId");
x.MapRightKey("UserId");
x.ToTable("UserCompany");
});
modelBuilder.Entity<User>()
.HasRequired(b => b.Company)
.WithMany()
.WillCascadeOnDelete(false);
}
- 2 回答
- 0 关注
- 174 浏览
添加回答
举报