1

所以我有两个类这样定义

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; }
}

问题是组和用户之间有两种关系。一是任何组只能有一个用户,即创建者。另一个是一个组有许多用户作为成员。

我想知道如何使用基于约定的定义来定义它,或者我是否需要使用另一种方法,因为它不能仅从命名约定中推断出来。

4

1 回答 1

2

您所要做的就是UserGroup实体添加另一个类型的虚拟属性:

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 表输出

SQL 表

于 2013-10-01T15:29:04.923 回答