【发布时间】:2014-06-30 05:51:32
【问题描述】:
我在我的 ASP MVC 3 站点中使用实体框架来处理一对多关系。主表 (AgentTransmission) 模型对象包含一个 List 的辅助表对象 (ClearninghouseParnters)。感谢 EF,我只需保存 AgentTransmission 对象以供 ClearinghousePartners 的 FK 字段填充和保存。
但是,用户获得的表单有五个字段用于输入信息交换所信息,如下所示。
每一行代表一个新的ClearinghousePartners 列表项对象。不幸的是,每个对象都被保存到数据库中,无论它是否包含数据。这在性能方面甚至在页面的显示方式上都没有真正的区别,但是它会使表格变得非常混乱。
我的问题是:如果ClearinghouseName、TradingPartnersName 或StartDate 列中存在值,是否有办法指示实体框架仅将项目保存在ClearinghousePartners 列表对象中?
同样,如果我们发现有一个项目回发到控制器,并且具有现有的ClearinghousePartners PK 并且在相同的字段中没有值/空白,我想从表中删除对象。
主表模型
仅供参考 - 此表包含大量字段,因此我只显示 List
public partial class AgentTransmission
{
.
.
public virtual List<ClearinghousePartners> ClearinghousePartners { get; set; }
}
辅助表模型
public partial class ClearinghousePartners
{
public int Id { get; set; }
public string ClearingHouseName { get; set; }
public string TradingPartnerName { get; set; }
public Nullable<System.DateTime> StartDate { get; set; }
public int AgtTransId { get; set; } //FK field corresponds to 'Id' on AgentTransmission
public virtual AgentTransmission AgentTransmission { get; set; }
}
控制器
agenttransmission.LastChangeDate = DateTime.Now;
agenttransmission.LastChangeOperator = Security.GetUserName(User);
db.AgentTransmission.Add(agenttransmission);
db.SaveChanges(); //Saves to both tables
查看
<fieldset id="ClearinghousePartners">
<legend>Clearinghouse Partners</legend>
<center>
<table>
<thead>
<th>Clearinghouse Name</th>
<th>Trading Partner Name</th>
<th>Start Date</th>
</thead>
<tbody>
@for (int i = 0; i < Model.ClearinghousePartners.Count(); i++)
{
<tr align="center">
@Html.HiddenFor(model => model.ClearinghousePartners[i].Id)
@Html.HiddenFor(model => model.ClearinghousePartners[i].AgtTransId)
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].ClearingHouseName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].TradingPartnerName, new { style = "width: 100px" })</td>
<td>@Html.TextBoxFor(model => model.ClearinghousePartners[i].StartDate, new { style = "width: 100px" })</td>
</tr>
}
</tbody>
</table>
</center>
</fieldset>
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-4.1