所以我有两个类定义为
public class Group
{
public string GroupId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<User> Users{ get; set; }
}
public class User
{
public string UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
问题是组和用户之间存在两种关系。一个是任何组只能有一个用户是创建者。另一个是组有许多用户作为成员。
我想知道如何使用基于约定的定义来定义它,或者我是否需要使用另一种方法,因为它无法仅通过命名约定来推断它。
答案 0 :(得分:2)
您所要做的就是向User
实体添加另一个Group
类型的虚拟财产:
public class Group
{
public string GroupId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual User Creator { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class User
{
public string UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
modelBuilder.Entity<User>()
.HasMany(u => u.Groups).WithMany(g => g.Users)
.Map(t => t.MapLeftKey("UserId")
.MapRightKey("GroupId")
.ToTable("UserGroup"));
SQL表格输出