如何正确地将项目添加到数据库和关注点分离
How to properly add items to database and separation of concerns
我正在尝试创建 post 以将实体添加到我的数据库中。我担心我可能会混淆数据层和视图层。我对设计模式非常不熟悉,存储库模式让我很不舒服。
这是我的控制器的一些代码。
[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 的正确实现,我将不胜感激。
我正在关注 pluralsight 的指南,而老兄的教学也在做类似的事情。
在您的示例中,为了创建新实体并将其保存到数据库中,您使用的是:
- a 存储库层 将模型(应用程序域的业务实体)与数据库模式对象(表、视图、 ETC..)。您的模型是
ArtItem
- 和一个 视图模型对象,
CreateArtItemRequest
, 解耦您的 ui 来自您的商业模式。
您必须实施的数据操作是:
- 从
CreateArtItemRequest
映射到ArtItem
- 您存储库
的方法 Add()
- 方法
SaveChangesAsync()
从你的示例中我看到你使用 2 种方法将新实体添加到你的存储库(这似乎是一个 属性 或字段,你的 class 控制器的成员)并且您调用了两次存储库的方法来添加创建的新实体,我认为这是一种错误,无论如何它只需要一次调用就可以将实体添加到存储库中。
您应该了解存储库的工作原理,以及它们如何对数据执行操作(Add
、Save
、Query
等)。
我正在尝试创建 post 以将实体添加到我的数据库中。我担心我可能会混淆数据层和视图层。我对设计模式非常不熟悉,存储库模式让我很不舒服。
这是我的控制器的一些代码。
[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 的正确实现,我将不胜感激。
我正在关注 pluralsight 的指南,而老兄的教学也在做类似的事情。
在您的示例中,为了创建新实体并将其保存到数据库中,您使用的是:
- a 存储库层 将模型(应用程序域的业务实体)与数据库模式对象(表、视图、 ETC..)。您的模型是
ArtItem
- 和一个 视图模型对象,
CreateArtItemRequest
, 解耦您的 ui 来自您的商业模式。
您必须实施的数据操作是:
- 从
CreateArtItemRequest
映射到ArtItem
- 您存储库 的方法
- 方法
SaveChangesAsync()
Add()
从你的示例中我看到你使用 2 种方法将新实体添加到你的存储库(这似乎是一个 属性 或字段,你的 class 控制器的成员)并且您调用了两次存储库的方法来添加创建的新实体,我认为这是一种错误,无论如何它只需要一次调用就可以将实体添加到存储库中。
您应该了解存储库的工作原理,以及它们如何对数据执行操作(Add
、Save
、Query
等)。