这里是我的2种型号:MVC - 模型与ICollection的
VendorMapMessage:
public int ID { get; set; }
public string Name { get; set; }
public int VendorMapID { get; set; }
public VendorMap VendorMap { get; set; }
public int DocumentTypeID { get; set; }
public DocumentType DocumentType { get; set; }
public int IncidentTypeID { get; set; }
public IncidentType IncidentType { get; set; }
public ICollection<VendorMapMessagePropertyService> VendorMapMessagePropertyServices { get; set; }
public string MessageContent { get; set; }'
VendorMapMessagePropertyService:
public int ID { get; set; }
public int VendorMapMessageID { get; set; }
public VendorMapMessage VendorMapMessage { get; set; }
public int PropertyTypeID { get; set; }
public PropertyType PropertyType { get; set; }
public int ServiceTypeID { get; set; }
public ServiceType ServiceType { get; set; }
这是我的逻辑:
public VendorMapMessage SaveConfirmationMessage(VendorMapMessage source)
{
VendorMapMessage result = null;
try
{
using (var db = new ClientAdminContext())
{
VendorMapMessage temp = null;
if (source.ID == default(int))
{
temp = new VendorMapMessage();
db.VendorMapMessages.Add(temp);
//techdebt remove
temp.ID = 84;
temp.IncidentTypeID = source.IncidentTypeID;
temp.DocumentTypeID = source.DocumentTypeID;
temp.MessageContent = source.MessageContent;
}
else
{
temp = db.VendorMapMessages.Single(o => o.ID == source.ID);
}
temp.IncidentTypeID = source.IncidentTypeID;
temp.DocumentTypeID = source.DocumentTypeID;
temp.MessageContent = source.MessageContent;
db.SaveChanges();
result = temp;
}
}
catch (Exception ex)
{
//log
throw;
}
return result;
这里是我的看法:
<label for="description" class="col-sm-4">Property Type</label>
<div class="col-md-7">
<select class="form-control" name="PropertyTypeID" multiple id="prop_type">
@foreach (PropertyType item in propertyTypes)
{
if (@Model.VendorMapMessagePropertyServices.Any(o => o.PropertyTypeID == item.ID))
{
<option selected="selected" [email protected]>@item.Name</option>
}
else
{
<option [email protected]>@item.Name</option>
}
}
</select>
</div>
ICollection VendorMapMessagePropertyService显示所有可用的属性类型。但我无法保存列出的属性类型。我缺少业务逻辑中的一行,它必须使用vendormapmessageID作为主键,并链接到vendormapmessagepropertyservices的propertytypeID。
混淆在vendormapmessagepropertyservice中连接PropertytypeID。 (我知道模型名称是废话,我不认为这会变得复杂)
抱歉不清楚;你理解它是正确的!我已经那样了。我更具体的保存来自VendorMapMessagePropertyServices的propertytypeID。你认为我应该多提一下propertytypeID @mayabelle – Ethan
我试着做这个'temp.VendorMapMessagePropertyServices.Select(x => x.PropertyTypeID)= source.VendorMapMessagePropertyServices.Select(x => x.PropertyTypeID);'仍然无法正常工作 – Ethan
这不会起作用 - 您必须获取每个对象并更新每个对象。此外,任务的左侧不能像你所拥有的linq语句。看到我上面的更新。 – mayabelle