1

私はこのようなものを持っています:

public class Account
    {
        [Key]
        public Guid AccountId { get; set; }
    }

    public class TransactionHistory
    {
        [Key]
        public int Id { get; set; }
        public Account Sender { get; set; }
        public Account Receiver { get; set; }
    }

私のモデルビルダーは次のようになります。

modelBuilder.Entity<TransactionHistory>()
                .HasRequired(history => history.Sender)
                .WithMany()
                .Map(s => s.MapKey("Sender"))
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<TransactionHistory>()
                .HasRequired(history => history.Receiver)
                .WithMany()
                .Map(s => s.MapKey("Receiver"))
                .WillCascadeOnDelete(false);

そして、私のデータベースでは、TransactionHistoryテーブルにsender、receiver、Account_AccountIdの3つの列があります。最初の2つの列は問題ありませんが、その3番目の列は必要ありません。また、CodeFirstがなぜそれを作成したのかわかりません...これを手伝ってくれませんか。

4

2 に答える 2

1

ICollection<TransactionHistory>inのようなコレクションAccountは、の自身の外部キーとの3番目の関係につながりますAccount。それはあなたが見ている追加の鍵です。3番目の関係が必要ない場合はAccount、コレクションを関連付けるナビゲーションプロパティを決定する必要があります。また...

modelBuilder.Entity<TransactionHistory>()
            .HasRequired(history => history.Sender)
            .WithMany(account => account.TransactionHistories)
            .Map(s => s.MapKey("Sender"))
            .WillCascadeOnDelete(false);

...また...

modelBuilder.Entity<TransactionHistory>()
            .HasRequired(history => history.Receiver)
            .WithMany(account => account.TransactionHistories)
            .Map(s => s.MapKey("Receiver"))
            .WillCascadeOnDelete(false);

しかし、両方ではありません。または、コレクションプロパティを削除すると、3番目のFKが表示されなくなります。

于 2012-12-14T15:47:20.947 に答える