[英]ASP.NET MVC / EF4 / POCO / Repository - How to Update Relationships?
[英]dynamic update the data using EF4 in asp.net mvc
例如,我有一个名为[User]的数据表,并使用EF4映射到User enetity:
Id, FullName, EmailAddress, Fax, Tel
在网页中,我只想更新以下的“ EmailAddess”和“ Fax” 2属性:
@using (Html.BeginForm("Edit", "User"))
{
<label>Email Address:</label>
@Html.TextBox("EmailAddress")
<label>Fax:</label>
@Html.TextBox("Fax")
<input type="submit" value="Update" />
}
和我为此做的控制器:
public ActionResult Edit(User user) {
var _user = GetUsers().Where(a => a.Id == user.Id).SingleOrDefault();
_user.Fax = user.Fax;
_user.EmailAddress = user.EmailAddress;
context.SaveChanges();
}
是的,我更新了它并成功,但是下次我也想更新“电话”,因此我需要更改代码,如下所示:
_user.Fax = user.Fax;
_user.EmailAddress = user.EmailAddress;
_user.Tel = user.Tel;
如果我有100个字段,我会为此而疯狂:(
那么,如何仅将模型更新到网页中相关字段的数据库?
谢谢
您绝对应该研究AutoMapper( http://automapper.codeplex.com/ )。
AutoMapper.Mapper.CreateMap(typeof(User), typeof(UserViewModel));
AutoMapper.Mapper.CreateMap<User, UserViewModel>()
.ForMember(d => d.Property1, f => f.MapFrom(s => s.Property1))
.ForMember(d => d.Property2, f => f.MapFrom(s => s.Property2))
.ForMember(d => d.Property3, f => f.MapFrom(s => s.Property3));
然后,您可以在“编辑”中执行以下操作
public ActionResult Edit(User user) {
var _user = GetUsers().Where(a => a.Id == user.Id).SingleOrDefault();
AutoMapper.Mapper.Map(user, _user);
context.SaveChanges();
}
实体框架只会更新实际上已更改的字段。
可以肯定,这就是您所需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.