我加入一个对象在数据库中的表的其他对象的名单表,加入MarketingContact
型contact
。这是我的模型类:添加对象包含使用实体框架
public class MarketingContact
{
public MarketingContact()
{
this.ContactTags = new List<ContactTag>();
}
public int id { get; set; }
//..some other properties not complex properties...
public virtual ICollection<ContactTag> ContactTags { get; set; }
}
这是ContactTag型号:
public class ContactTag
{
public ContactTag()
{
this.MarketingContacts = new List<MarketingContact>();
}
public int TagId { get; set; }
//some other no complex properties...
public virtual ICollection<MarketingContact> MarketingContacts { get; set; }
}
这是我AddContact()
方法在我的控制器:
[HttpPost]
public ActionResult AddContact(MarketingVM marketingContactVM)
{
List<ContactTag> contactTags = new List<ContactTag>();
for (int i = 0; i < marketingContactVM.MarketingContacts.Count; i++)
{
if (marketingContactVM.MarketingContacts[i].IsSelected==true)
{
contactTags.Add(new ContactTag { Name = marketingContactVM.MarketingContacts[i].Name, TagId = marketingContactVM.MarketingContacts[i].TagId,
InfusionSoftId = marketingContactVM.MarketingContacts[i].InfusionSoftId});
}
}
MarketingContact marketingContact = AutoMapper.Mapper.Map<MarketingContact>(marketingContactVM);
marketingContact.ContactTags = contactTags;
context.MarketingContacts.Add(marketingContact);
context.SaveChanges();
return Json(new { result = "success"}, JsonRequestBehavior.AllowGet);
}
注意,在我的控制器操作我正在使用ViewModel(MarketingVM type
)。 在我保存到MarketingContact
对象保存在MarketingContacts
表的数据库,但在ContactTags
表中的新行创建取决于什么属于marketingContact
的ContactTags ICollection
包含的时间,我只是从ContactTags
选择时,行已经存在,我不需要在ContactTags
表中添加更多具有相同值的行,为什么会发生这种情况?此刻,我将对象保存到数据库中,marketingContact
对象包含一个ContactTags
集合,其中包含ContactTags
表中存在的字段,包括正确的TagId
值,但不是将它们与MarketingContacs
表中的该行关联起来,而是在该表中创建新行ContactTags
表除了TagId
相同的值(它会产生一个新的值),因此该值被复制每次在ContactTags
表,我不需要这个。我需要改变什么?