asp.net 如何在更新数据库实体时忽略特定字段?

hec6srdp  于 12个月前  发布在  .NET
关注(0)|答案(2)|浏览(233)

我有一个类MessageModel,它有一个字段public string? AttachedFile
我的控制器向数据库添加一条消息

[SwaggerOperation(Summary = "Create Message")]        
public async Task<IActionResult> AddMessage(MessageModel messageModel)
{
    if (messageModel.AttachedFile != null)
    {
        var mediaDto = _mapper.Map<MediaDto>(messageModel);
        var createdMedia = await _mediaService.Create(mediaDto);

        messageModel.SetMediaGuid(createdMedia);
    }
    return Ok(await _messageService.Create(_mapper.Map<MessageDto>(messageModel)));
}

字符串
我的其他控制器编辑消息,但我不想在编辑现有消息时更新AttachedFile字段

[HttpPost]
[SwaggerOperation(Summary = "Edit Message")]

public async Task<IActionResult> EditMessage(MessageModel messageModel)
{
    await _messageService.Update(messageModel.Id, _mapper.Map<MessageDto>(messageModel));
    return Ok();
}


如何在使用编辑消息控制器时忽略AttachedFile字段

tvz2xvvm

tvz2xvvm1#

可能最简单的选择是只使用2个单独的模型(可能有一些基础模型来包含基础/共享 prop ):

public abstract class MessageModelBase
{
   // ...
}

public class AddMessageModel : MessageModelBase
{
   public ... AttachedFile {get; set;}
}

public class EditMessageModel : MessageModelBase
{
}

字符串
并使用它们:

[SwaggerOperation(Summary = "Create Message")]        
public async Task<IActionResult> AddMessage(AddMessageModel messageModel)
{
    // ...
} 

[SwaggerOperation(Summary = "Edit Message")]
public async Task<IActionResult> EditMessage(EditMessageModel messageModel)
{
    // ...
}


EditMessage也可能是PUT,而不是POST。

kcwpcxri

kcwpcxri2#

你可以使用上面Guru提供的答案,或者在你的存储库方法messageRepository.Update(entity)中做一个调整,这将只更新你想要更新的字段。
如果你使用的是实体框架的话。

public void UpdateEntity(MessageModel message)
    {
        // Retrieve the existing entity
        var existingEntity = _dbContext.GetEntityById(message.id);

        if (existingEntity != null)
        {
            // Modify only the fields you want to update
            existingEntity.SomeField = newFieldData;

            // Save changes to the database
            _dbContext.SaveChanges();
        }
        // Handle the case where the entity is not found
    }

字符串

相关问题