少し検索しましたが、同じ問題/質問が見つかりません。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)