0

中程度のサイズ (約 20 の生成されたテーブル) である私のドメイン モデルでは、Entity Framework がマッピングしていない関係が 1 つだけあり、その理由がわかりません。AccountRecordとの関係 (1-1)Accountです。は、Accountユーザーを持つアカウントを指します。

クラスは次のようになります。

public class Account
{
    int ID { get; set; }
    /* snip */
    AccountRecord Record { get; set; }
}

public class AccountRecord
{
    int ID { get; set; }
    Account Account { get; set; }
    /* snip */
}

マッピングは次のように定義されます。

    public AccountConfiguration()
    {
        // Table name and primary key
        ToTable("Accounts");
        HasKey(x => x.ID);
        Property(x => x.ID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
            .HasColumnName("AccountId");

        HasOptional(x => x.AccountRecord).WithRequired(x => x.Account);
    }

    public AccountRecordConfiguration()
    {
        // Table name and primary key
        ToTable("AccountRecords");
        HasKey(x => x.ID);
        Property(x => x.ID)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)
            .HasColumnName("AccountRecordId");

        HasRequired(x => x.Account).WithOptional(x => x.AccountRecord);
    }

両方のエンティティの他のすべての列が作成されていますが、これは作成されていません。アカウントのアカウント レコードを設定しようとすると、次のようになります。A dependent property in a ReferentialConstraint is mapped to a store-generated column

4

1 に答える 1

0

誰かがこのグーグルを見つけたら答えを出すと思った。

EF は列を作成していませんでしたが、1 対 1 の関係があるため、代わりに AccountRecordId の外部キーを Accounts テーブルに配置していました。DatabaseGeneratedOption.Identity解決策は、Account Record PK からを削除することでした。

于 2013-06-19T02:59:32.627 に答える