我在实体框架中与 POCOS 建立了多对多关系。
我有一个名为 Transaction 的表,它有一个 TransactionId 列和一些其他列,这是我要插入的实体,一个名为 Reason 的表是一个具有 ReasonId 和一个 ReasonDescription 列的目录表,我还有一个名为 Transaction_Reason 的表为了保存关系,该表有 2 列,称为 ReasonId 和 TransactionId,它们各自的表都有外键。
在我的 EF Transation 配置中,构造函数中有以下内容:
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 中插入了记录,但是每当我检查原因表时,我也会在这里创建记录,而这应该只是一个目录表。
这是我的插入代码:
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 方法和保存关系的 Transaction_Reason 表中创建的记录,而不是在我的原因目录表中。
有人知道如何避免这种情况吗?