私は流暢なAPIを使用して同じオブジェクトに2対多の関係を定義しようとしています。ここでEntity Framework、Fluent APIを使用して同じオブジェクトに2対多の関係
は単純化したモデルである。ここでは
public class PurchaseRequisition
{
[Key, ForeignKey("Transaction")]
public int TransactionId { get; set; }
public virtual ICollection<People> RequisitionedBys { get; set; }
public virtual ICollection<People> AuthorizedSignatures { get; set; }
}
public class People
{
[Key]
public string Id{ get; set; }
public string FullName { get; set; }
public virtual ICollection<PurchaseRequisition> PurchaseRequisitionsForRequisitionedBys { get; set; }
public virtual ICollection<PurchaseRequisition> PurchaseRequisitionsForAuthorizedSignatures { get; set; }
}
は流暢なAPIコードです:私が欲しいもの
modelBuilder.Entity<PurchaseRequisition>()
.HasMany(a => a.RequisitionedBys)
.WithMany(b => b.PurchaseRequisitionsForRequisitionedBys)
.Map(x =>
{
x.MapLeftKey("PurchaseRequisitionId");
x.MapRightKey("RequisitionedById");
x.ToTable("PurchaseRequisitionRequisitionedBy");
});
modelBuilder.Entity<PurchaseRequisition>()
.HasMany(a => a.AuthorizedSignatures)
.WithMany(b =>b.PurchaseRequisitionsForAuthorizedSignatures)
.Map(x =>
{
x.MapLeftKey("PurchaseRequisitionId");
x.MapRightKey("AuthorizedSignatureId");
x.ToTable("PurchaseRequisitionAuthorizedSignature");
});
は、2つの別々のリンクテーブルを生成することですが、何EFが発生すると、2つの外部キーでありますPeopleテーブルのPurchaseRequisitionへの列と、PurchaseRequisitionフィールドのPeopleへの1つの外部キー列。
何が間違っているか教えていただけますか?
マッピングが正しいように見えます。 modelBuilderコードに到達したことをデバッガにチェックインしましたか? – Slauma
私はチェックして、私のコードに到達していないようです。 – ljustin
モデルはDB-FirstまたはModel-Firstから来ていますか?特に、接続文字列にEDMメタデータセクションが含まれていますか?もしそうなら、それを削除して(メタデータセクションなしの単純な接続文字列を使用して)コードファーストで作業する必要があります。そうしないと、 'OnModelCreating'はまったく呼び出されません。 – Slauma