我加入一個對象在數據庫中的表的其他對象的名單表,加入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
表,我不需要這個。我需要改變什麼?