如何使用业务层中的实体框架更新实体?

时间:2014-06-30 06:59:36

标签: c# entity-framework entity-framework-5

我的Web应用程序由3层,控制器,业务逻辑和存储库构成。

从BL层我用以下代码更新实体。如您所见,我正按物业更新物业。

我想知道是否有更好的方法,删除此手动映射。

---------------------- CONTROLLER

    public IHttpActionResult Put(int id, DeviceDTO dto)
    {
        GaDevice device = Mapper.Map<GaDevice>(dto);
        deviceBLL.Update(id, device);
        return Ok();
    }

---------------------- BL

    public void Update(int id, GaDevice entity)
    {
        bool hasValidId = GetById(id) != null ? true : false;
        if (hasValidId == true)
        {
            GaDevice device = deviceRepo.GetById(id);
            device.CanNotifyPc = entity.CanNotifyPc; // NOT SURE HERE
            device.CanNotifyPrinter = entity.CanNotifyPrinter;
            device.LocationId = entity.LocationId;
            device.Name = entity.Name;
            device.Note = entity.Note;
            device.OperativeFromTime = entity.OperativeFromTime;
            device.OperativeToTime = entity.OperativeToTime;
            deviceRepo.Update(device );
            deviceRepo.Save();
        }

----------------存储库

    public void Update(GaDevice entity)
    {
        context.Entry(entity).State = EntityState.Modified;
    }

1 个答案:

答案 0 :(得分:1)

如何保存context中对Update()所做的更改? 否则,Save()中的代码会做什么?

public void Update(GaDevice entity)
{
    context.Entry(entity).State = EntityState.Modified;
    context.SaveChanges();
}