我的数据集有一个简单的编辑表单,我想知道是否可以只保存文本框..依此类推......我真的改变了。
我没有将EF用于我的MVC应用程序,现在我希望这不是错误的决定。
<fieldset>
<legend>Product Informations</legend>
<div>@Html.LabelFor(model => model.Product.Id, "Product Id")</div>
<div>@Html.TextBoxFor(model => model.Product.Id, new { @readonly = "readonly" })</div>
<div>@Html.LabelFor(model => model.Product.Name, "Product Name")</div>
<div>@Html.TextBoxFor(model => model.Product.Name, new { @readonly = "readonly" })</div>
<div>@Html.LabelFor(model => model.Product.ProductInformation.GeneralDescription, "General Description")</div>
<div>@Html.TextBoxFor(model => model.Product.ProductInformation.GeneralDescription)</div>
<input type="submit" value="Edit" />
</fieldset>
答案 0 :(得分:1)
您的帖子没有说明您如何访问您的数据,其他“不使用”EF“。您需要使用某种数据访问框架; ADO,EF,NHibernate等。因为您使用的是MVC建议使用实体框架。
答案 1 :(得分:0)
我没有看到数据访问策略是否与调用“更新方法”有关。假设您使用EF 。在控制器内部,您仍然需要在模型和业务对象/实体之间传输数据,然后决定是否设置EntityState.Modified
。如果您使用的是存储库,则可以使用更新的标志。也许这是在控制器中,或者您可能将逻辑放在业务实体中并使其自行更新。例如,如果您正在使用存储库/ UofW并将“更新”逻辑放在控制器中,它可能看起来像:
using (UnitOfWork work = new UnitOfWork())
{
IProductFactory factory = work.ProductFactory;
Product product = factory.GetByID(model.Id);
product.Name = model.Name;
// TO UPDATE OR NOT? THAT IS THE QUESTION
factory.Update(expected);
work.Save();
}
你需要某种旗帜来帮助:
using (UnitOfWork work = new UnitOfWork())
{
bool updated = true;
IProductFactory factory = work.ProductFactory;
Product product = factory.GetByID(model.Id);
if(product.Name != model.Name)
{
product.Name = model.Name;
updated = true;
}
// TO UPDATE OR NOT? THAT IS THE QUESTION
if(updated)
{
factory.Update(expected);
work.Save();
}
}