Asp.net mvc 在asp.net mvc中使用EF4动态更新数据

Asp.net mvc 在asp.net mvc中使用EF4动态更新数据,asp.net-mvc,asp.net-mvc-3,entity-framework,razor,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Razor,例如,我有一个名为[User]的数据表,并使用EF4映射到User enetity: Id, FullName, EmailAddress, Fax, Tel 在网页中,我只想更新下面的“EmailAddess”和“Fax”2属性: @using (Html.BeginForm("Edit", "User")) { <label>Email Address:</label> @Html.TextBox("EmailAddress") <la

例如,我有一个名为[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" />
}
是的,我更新了它并且成功了,但是下次我还想更新“Tel”,所以我需要像这样更改代码:

_user.Fax = user.Fax;
_user.EmailAddress = user.EmailAddress;
_user.Tel = user.Tel;
如果我有100个字段,我会为之疯狂:(

那个么,我怎样才能只为网页中的相关字段将模型更新到数据库中呢


谢谢

你一定要看看AutoMapper()

实体框架将只更新实际更改的字段


非常确定这就是你所需要的。

你必须澄清。你的意思是说你有1000个不同的表单,都在更新模型的不同属性吗?@BuildStarted-这根本不能解决他的问题。他仍然必须为表单的每个排列创建1000个视图模型。嗨,谢谢你的评论,对于AutoMapper,这意味着我需要首先为100个文件制作映射器:不一定。AutoMapper可以直接推断映射-尤其是如果您使用相同的对象。虽然阅读了它,但我想我明白您的意思-我想我需要一些澄清-您是想在更新字段时进行单个编辑操作,还是将使用100个不同的操作每个更新不同的字段?你问题的最后一部分让我相信你只是想用新字段更新函数,而不是创建新函数。@jfar哈哈,你在开玩笑,我会有3~5个视图模型。
_user.Fax = user.Fax;
_user.EmailAddress = user.EmailAddress;
_user.Tel = user.Tel;
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();
}