Entity Framework と POCOS で ManyToMany 関係があります。
TransactionId 列とその他の列を持つ Transaction というテーブルがあり、これが挿入したいエンティティです。Reason と呼ばれる 1 つのテーブルは、ReasonId と ReasonDescription 列を持つカタログ テーブルです。Transaction_Reason というテーブルも 1 つあります。関係を保存するために、このテーブルには ReasonId と TransactionId という 2 つの列があり、それぞれのテーブルへのキーが関連付けられています。
EF のトランザクション構成では、コンストラクターに次のものがあります。
base.HasKey(t => new { t.TransactionId }).HasMany(c => c.Reasons).WithMany(r => r.Transactions)
.Map(t =>
{
t.MapRightKey("ReasonId");
t.MapLeftKey("TransactionId");
t.ToTable("Transaction_Reason");
});
リレーションシップは正しく行われ、Transaction_ReasonTable に挿入されたレコードを取得しますが、Reasons テーブルをチェックするたびに、ここで作成されたレコードも取得しますが、これはカタログ テーブルのみである必要があります。
挿入コードは次のとおりです。
if (reasons != null)
{
foreach (var item in reasons)
{
Reason reason = _reasonReopository.Find(item);
transaction.Reasons.Add(reason);
}
}
transaction = this._repository.Create(transaction);
this._repository.Commit();
Save メソッドで作成しているトランザクション テーブルと、Reason カタログ テーブルではなく、リレーションシップが保存される Transaction_Reason テーブルにレコードを挿入したいだけです。
これを回避する方法を知っている人はいますか?