【发布时间】:2012-09-27 07:32:09
【问题描述】:
我正在寻找一种更好的方法来使用实体框架更新记录。
下面是我现在使用的,其中 playerFromModel 是从 View 中获取的数据。
public bool UpdatePlayer(PlayerEntity playerFromModel)
{
bool updateSuccessfull = false;
using (var context = new PlayerEntities())
{
var player = context.Player.Where(m => m.emailAddress == playerFromModel.EmailAddress).FirstOrDefault();
if (player != null)
{
player.emailAddress = playerFromModel.EmailAddress;
player.first_name = playerFromModel.FirstName;
player.last_name = playerFromModel.LastName;
player.alt_email_id1 = playerFromModel.AlternateEmailAddress;
player.street = playerFromModel.Street;
player.city = playerFromModel.City;
player.state = playerFromModel.State;
player.zip = playerFromModel.Zip;
player.country_code = playerFromModel.CountryCode;
player.phone1 = playerFromModel.Phone;
try
{
context.SaveChanges();
updateSuccessfull = true;
}
catch
{
updateSuccessfull = false;
}
}
}
return updateSuccessfull;
}
如您所见,我必须手动映射每个字段,并采用我在所有地方都遵循的相同方法。
我在想肯定有更好的方法来做到这一点。
请指导我。谢谢。
【问题讨论】:
-
使用一些映射库,比如 automapper:automapper.codeplex.com
-
@MiBu 是的,我正在使用 AutoMapper,并使用它将 MVC 模型文件夹中定义的 Viewmodel PlayerViewModel 映射到我的 Repository Proj 中定义的 PlayerEntities
-
能否请您添加所有层级的示例类(播放器),以便我更好地理解它?!
-
所有层的所有类都具有相同的属性
-
@Gromer 太好了,从来不知道你可以那样做。谢谢!
标签: asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-4