Добрый день, подскажите пожалуйста, правильно ли я делаю.
В основном, при обращении к БД использую репозитории. Например,
Создаю модель
public class Photos:BaseEntity
{
public int id {get;set;}
public string file {get;set;}
....
}
создаю репозитоии
public interface IRPhotos<T> where T:BaseEntity
{
Task New(T photo);
Task Delete(int id);
Task<Photos> Avatar(string iin);
Task<IList<Photos>> ShowAll(string iin);
}
Тек же создаю для каждого интерфейса свой файл
private string connectionString;
public ReposPhotos(IConfiguration configuration)
{
connectionString = configuration.GetValue<string>("DBInfo:ConnectionString");
}
internal IDbConnection Connection
{
get
{
return new NpgsqlConnection(connectionString);
}
}
public async Task<Photos> Avatar(string iin)
{
using (IDbConnection dbConnection = Connection)
{
dbConnection.Open();
return (await dbConnection.QueryAsync<Photos>("SELECT * FROM social.photos WHERE iin=@iin AND avatar=true",new { iin=iin})).FirstOrDefault();
}
}
Бывает случай когда прям в контроллере обращаюсь к БД, например
public async Task<IActionResult> TPricing()
{
using (IDbConnection dbConnection = Connection)
{
dbConnection.Open();
return View(await dbConnection.QueryAsync<TPricing>("SELECT DISTINCT(iin) FROM uchast.t_pricing"));
}
}
в связи с этим у меня вопрос, правильно ли я делаю? Можно ли так использовать? Плюсы и минусы?
связь asp.net core+dapper+postgresql