[英]Having issues in doing a Custom Validation for a GUID property in API asp.NET core C#
[英]Rest API design issues in C# (ASP.NET Core)
所以 iv 負責重構一個非常舊的代碼庫。 代碼絕對是一團糟,所有功能代碼都寫在 controller class 中,沒有服務類沒有存儲庫類(Controller 是 6000 行代碼)。
現在我已經開始創建服務類,當它們被調用時自動注入到 controller 方法中,如下所示:
[HttpGet]
[Route("")]
public IActionResult CheckAccessToServer([FromServices] CheckServerAccessService _checkServerAccessService)
{
return _checkServerAccessService.CheckAccessToServer(_env);
}
但是當涉及到存儲庫類時,我找不到任何傳統/好的方法來做這件事。 我習慣於使用 spring/JPA/Annotations 但在 C#(Net core)中我真的不知道如何以好的方式做到這一點。 這是服務 class(僅相關部分)的示例,它使用存儲庫 class,使用“新建”創建每個存儲庫 class,我認為它看起來很糟糕。
public dynamic ApiMapper(string method, dynamic paramsObject, DbContext db)
{
HelpMethods.GetNetworkTimeStamp("Start", 2);
dynamic returnData = null;
string error = null;
switch (method)
{
case "getservicelocations":
returnData = new ServiceLocationsRepository(db).GetServicelocations();
break;
case "getstationsinservicelocation":
returnData = new StationsRepository(db).GetStationsInServiceLocation(paramsObject);
break;
case "addstation":
returnData = new StationsRepository(db).AddStation(paramsObject);
break;
case "updatestation":
returnData = new StationsRepository(db).UpdateStation(paramsObject);
break;
default:
error = "Unknown method";
break;
}
正如您所注意到的,自動注入到 controller 中的 DB object 被發送,並且每個 repo 都是使用前面提到的“New”語句制作的? 有什么辦法可以清理干凈嗎? 我可以將數據庫自動注入到服務類中嗎?如何? 我可以通過自動注入在服務中創建回購類嗎?如果可以,如何創建?
“我可以將數據庫自動注入到服務類中嗎?如何?”
是的,如果您像這樣在啟動 class 中添加了 DbContext:
services.AddDbContext<YourDbContext>
然后你可以在任何服務、回購、controller 等中注入“YourDbContext”。
一個建議是不使用“ApiMapper”,而是為每個回購類(ServiceLocationsRepository、StationsRepository 等)創建接口,然后在啟動 class 中注冊這些接口,然后將它們注入到您的服務類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.