Другие уже отметили, что это плохая идея. Вот пример того, что вы могли бы сделать.
NotesRepository.cs
В этом случае я преобразовал логику get-note-by-id в класс следующим образом:
public class NotesRepository
{
private readonly HDDbContext _context;
public NotesRepository(HDDbContext context)
{
_context = context;
}
public Task<Note> GetNoteAsync(int id)
{
// your logic
return note;
}
}
Startup.cs
Зарегистрируйте его в контейнере DI, чтобы он был доступен везде:
public void ConfigureServices(IServiceCollection services)
{
// ... the existing code
// Register the notes repository as a service
services.AddScoped<NotesRepository>();
}
Теперь вы можете использовать его с любого количества контроллеров / служб, сколько хотите, используя DI:
public class NoteController : Controller
{
private readonly NotesRepository _notes;
public NoteController(NotesRepository notes)
{
_notes = notes;
}
[HttpGet("{userid}")]
public async Task<IActionResult> GetNote([FromRoute] int userid)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var note = await _notes.GetAsync(userId);
if (note == null)
{
return NotFound();
}
return Ok(note);
}
}