1

在 EF 中,交叉引用表是通过创建多对多关系抽象出来的。例如

在此处输入图像描述

有一个 SQL 表dbo.TrialContactCrossReference将 TrialContactId 与 TrialID 相关联。现在,EF 没有生成实体TrialContactCrossReference,因为它与这种 MANY-MANY 关系有关。如何向所述表添加新行?

我试过了

context.TrialContacts.???而且context.ClinicalTrials.???只是不知道该怎么办。如果我有一个新的联系人想与试验相关联,我应该怎么做?

4

3 回答 3

2

如果我有一个新的联系人想与试验相关联,我应该怎么做?

假设您有一个现有的 Contact 实例,只需执行以下操作:

trial.TrialContacts.Add(contact);
context.SaveChanges();

EF 将为您处理中间表插入。请注意,添加Contacts 和Trials 就像它们不相关一样。

于 2013-07-30T20:38:36.123 回答
2

trial.Contacts.Add(contact);

或者

contact.Trials.Add(试用);

或者(和我的建议)

您可以为交叉引用表创建一个附加实体。这会将多对多关系转换为 2 个一对多关系。超过 %90 例交叉表有额外的列(至少 IsActive、RecordDate 等),即使它没有,将来也可能如此,它需要您对代码进行大量更改。

于 2013-07-30T20:42:29.673 回答
1

设置它时,有一个对我来说并不明显的技巧。必须将 TableA 添加到 TableB,而不仅仅是添加到自身。事实上,查看生成的实体,每个实体都有另一个实体的 List<>。

class TableA
{
   List<TableB> TableB;
}

class TableB
{
   List<TableA> TableA;
}

例如,如果我想将 TrialContact 添加到 ClinicalTrial 中,那么我会写:

context.ClinicalTrials.TrialContacts.Add(trialContact);
context.SaveChanges()

然后更新外部参照表以反映关系。

于 2013-07-30T21:34:25.290 回答