1

だから私はそのように定義された2つのクラスを持っています

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

問題は、グループとユーザーの間に 2 つの関係があることです。1 つは、すべてのグループが作成者であるユーザーを 1 人しか持てないことです。もう 1 つは、グループに多数のユーザーがメンバーとして含まれていることです。

規則ベースの定義を使用してこれをどのように定義できるか、または命名規則だけでは推測できないため、別の方法を使用する必要があるのではないかと考えていました。

4

1 に答える 1

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 テーブルの出力

SQL テーブル

于 2013-10-01T15:29:04.923 に答える