【发布时间】:2019-12-26 12:31:50
【问题描述】:
这些是模型:
public class Contact
{
public Contact()
{
Emails = new List<Email>();
}
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Address { get; set; }
public ICollection<Email> Emails { get; set; }
}
public class Email
{
public int Id { get; set; }
public string Name { get; set; }
public virtual int ContactId { get; set; }
}
在我的详细信息页面上,用户可以添加更多电子邮件、删除现有的...等...或更改现有的电子邮件。 如何更新收藏? 我试试这个:
var contactFromDb = db.Contacts.Include("Emails").Include("Telephones").Where(x => x.Id == contact.Id).FirstOrDefault();
contactFromDb.Address = contact.Address;
contactFromDb.Name = contact.Name;
contactFromDb.Surname = contact.Surname;
contactFromDb.Telephones = contact.Telephones;
contactFromDb.Emails = contact.Emails;
字符串属性更新得很好,我尝试以同样的方式更新集合,但我得到了重复的值。如何更新邮件?
【问题讨论】:
-
你需要比较集合,哪些是新实体,然后添加它们,哪些删除实体然后删除它们,哪些现有实体然后更新它们
-
在您的电子邮件类中,contactid 属性不应是虚拟的。它应该由外键属性标记并添加带有类联系人的虚拟属性。
标签: c# asp.net-mvc entity-framework