динамическое обновление данных с использованием EF4 в asp.net mvc - PullRequest
1 голос
/ 21 декабря 2010

например, у меня есть таблица данных с именем [Пользователь], и сопоставление с пользовательским энтузиазмом с EF4:

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 полей, я с ума схожу за это: (

Итак, как я могу обновить модели в базе данных только для связанных полей на веб-странице?

спасибо

1 Ответ

0 голосов
/ 21 декабря 2010

Вы обязательно должны заглянуть в 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));

Затем в вашем Edit вы можете сделать следующее

public ActionResult Edit(User user) {
    var _user = GetUsers().Where(a => a.Id == user.Id).SingleOrDefault();

    AutoMapper.Mapper.Map(user, _user);

    context.SaveChanges();
}

. Entity Framework будет обновлять только те поля, которые действительно изменились.

Почти наверняка это всетебе нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...