我有2个相关实体:Contact
和Address
。彼此之间存在关系。 1联系1地址。
在创建表单中,我填充FirstName和LastName文本框。我有一个与地址相关的字段。
在某些情况下,我执行AJAX请求以自动填充地址信息。
问题是:当我单击“保存”时,会创建一个新的“地址”条目,而不是仅仅将联系人与AJAX请求提供的AddressID相关联。
所需的行为是,如果AddressID为空,请保存新的地址条目。如果AddressID不为空,只需将其关联即可。
<%: Html.TextBoxFor(model => model.ContactInfo.FirstName)%>
<%: Html.TextBoxFor(model => model.ContactInfo.LastName)%>
<%:Html.TextBoxFor(model => model.ContactInfo.Address.AddressID)%>
<%:Html.TextBoxFor(model => model.ContactInfo.Address.City)%>
<%:Html.TextBoxFor(model => model.ContactInfo.Address.Street)%>
如何做到这一点?
这是我保存实体
public ActionResult Create(Contact ContactInfo){
try
{
ContactInfo.IsActive = true;
_db.AddToContacts(ContactInfo);
_db.SaveChanges();
}
}
答案 0 :(得分:0)
你的意思是:
ContactInfo.IsActive = true;
if (ContactInfo.HasValue)
{
ContactInfo.Address = _db.Addresses.Single(a => a.AddressID == ContactInfo.Address.AddressID);
}
_db.AddToContacts(ContactInfo);
_db.SaveChanges();
使用FK关联(可选,在EF 4中),您也可以执行以下操作:
ContactInfo.IsActive = true;
if (ContactInfo.HasValue)
{
ContactInfo.Address = null;
ContactInfo.AddressID = ContactInfo.Address.AddressID;
}
_db.AddToContacts(ContactInfo);
_db.SaveChanges();