2

次のエンティティがあります。

public class User
{
    public int ID {get; set;}

    public int GroupID {get; set;}     // navigation property with 
    public Group Group {get; set;}     // foreign key field

    public Adress Adress {get; set;}   // navigation property only

}

エンティティ フレームワークから生成されたテーブルは次のようになります。

ID
GroupID
Adress_ID

FK 列の列の名前が同じではないのは好きではありません。「GroupID、AdressID」または「Group_ID、Adress_ID」のいずれかで同じ規則を使用することはできますか?

設定より規約を使用しており、Fluent API を使用したくありません。

4

1 に答える 1

2

EF 4.1 から 4.3 では、カスタム規則の作成がサポートされていないため、作成できません。(Fluent API を使用せずに) できる唯一のことは、おそらく外部プロパティを別の列名にマッピングすることです。

[Column("Group_ID")]
public int GroupID {get; set;}

次に、データベースにアンダースコア付きの両方の FK 列があります。しかし、ご覧のとおり、少なくともデータ注釈で規則を上書きする必要があります。

アンダースコアなしで 2 番目の FK 列を定義することは、Fluent API でのみ可能です。

modelBuilder.Entity<User>()
    .HasOptional(u => u.Address)
    .WithMany()
    .Map(x => x.MapKey("AddressID"));
于 2012-04-21T11:40:20.553 に答える