0

少し検索しましたが、同じ問題/質問が見つかりません。EF が InverseProperty DataAnnotation に遭遇するテーブルを作成するときの (データベース内の) テーブルの命名に関して質問があります

「ダミー/デモコード」:

public class User
{
    public Guid Id { get; set; }
    public String Name { get; set; }

    public virtual List<Event> InvitedEvents { get; set;}
    public virtual List<Event> AcceptedEvents { get; set;}
    public virtual List<Event> DeclinedEvents { get; set;}
}

public class Event
{
    public String Name { get; set;}

   [InverseProperty("InvitedEvents")]
   public virtual List<User> InvitedUsers { get; set; }
   [InverseProperty("AcceptedEvents")]
   public virtual List<User> AcceptedUsers { get; set; }
   [InverseProperty("DeclinedEvents")]
   public virtual List<User> DeclinedUsers { get; set; }

}

これはすべて機能し、ルックアップ テーブルが作成されますが、私の質問は 、そのテーブルに名前を付けるにはどうすればよいですか?

それらは現在 (次のような) 名前が付けられています - EventUser - EventUser_1 - EventUser_2

もっと「読みやすい」名前を付けたいと思います。

それが明確であることを願っています。

アップデート!

Ladislav Mrnkaの回答によると、流暢な API が解決策でした。[InverseProperty] プロパティを削除し、リレーションの作成を DataContext クラスに追加しました。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Event>()
        .HasMany(e => e.InvitedEvents )
        .WithMany(u => u.InvitedUsers )
        .Map(mc =>
            {
                mc.ToTable("%TABLENAME%");
                mc.MapLeftKey("UniqueId");
                mc.MapRightKey("UniqueId");
             });
}

各クラスに UniqueId 列が含まれていることを確認する必要があります (私のデモ例では EventId、UserId)

4

1 に答える 1

0

回答も回答で更新されました

Ladislav Mrnka が答えたように、流暢な API が解決策でした。[InverseProperty] プロパティを削除し、リレーションの作成を DataContext クラスに追加しました。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Event>()
        .HasMany(e => e.InvitedEvents )
        .WithMany(u => u.InvitedUsers )
        .Map(mc =>
            {
                mc.ToTable("%TABLENAME%");
                mc.MapLeftKey("UniqueId");
                mc.MapRightKey("UniqueId");
             });
}
于 2015-06-24T10:12:47.540 に答える