我正在尝试创建一个帖子,以将实体添加到我的数据库中。我担心我可能会混淆数据和视图层。我对设计模式非常陌生,而存储库模式正在使我丧命。
这是我控制器的一些代码。
[HttpPost("CreateArtItem/{createArtItemRequest}")]
public async Task<ActionResult<ArtItem>> Put(CreateArtItemRequest createArtItemRequest)
{
try
{
if (createArtItemRequest != null)
{
ArtItem artItem = new ArtItem()
{
//mapping
};
_artRepository.AddArtItem(artItem);
_artRepository.Add(artItem);
if (await _artRepository.SaveChangesAsync())
{
return Created(artItem.Id.ToString(), artItem);
}
else
{
return this.StatusCode(StatusCodes.Status500InternalServerError, "Database failure.");
}
}
else
{
return BadRequest();
}
}
catch (Exception e)
{
return this.StatusCode(StatusCodes.Status500InternalServerError, "Database failure.");
}
}
[如果有人可以向我解释不同的层如何工作,数据操作是什么以及这是否是post的正确实现,我将非常感激。
我正在遵循关于多元视野的指南,而花花公子的教学也在做类似的事情。
在您的示例中,为了创建新实体并将其保存到数据库中,您使用:
ArtItem
CreateArtItemRequest
,这会将您的用户界面与业务模型分离。您必须实现的数据操作是:
CreateArtItemRequest
映射到ArtItem
] >>Add()
SaveChangesAsync()
您应该知道存储库如何工作,以及它们如何对数据(Add
,Save
,Query
等)进行操作。