Как я должен вставлять свой MyDbContext
в свой уровень сервиса базы данных MyService
?Внедрение DbContext в сервисный уровень
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyDbContext>(options =>
options.UseSqlServer(Configuration["ConnectionStrings:DefaultConnection"]));
services.AddMvc();
}
MyDbContext.cs
public partial class MyDbContext : DbContext
{
public virtual DbSet<User> User { get; set; }
public MyDbContext(DbContextOptions<MyDbContext> options)
:base(options)
{
}
}
appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=MyServer;Database=MyDatabase;user id=MyUser;password=MyPassword;"
}
}
MyService.cs
public class MyService
{
public User GetUser(string username)
{
// Should i remove this call and get the reference from the injection somehow?
MyDbContext db_context = new MyDbContext(optionsBuilder.Options);
using (db_context)
{
var users = from u in db_context.User where u.WindowsLogin == username select u;
if (users.Count() == 1)
{
return users.First();
}
return null;
}
}
}
В моем GetUser
метод, я знаю, что я должен использовать мой впрыскивается MyDbContext
здесь, но я не совсем уверен, как взять ее. Какую часть головоломки мне не хватает?
Всегда указывайте прямые кавычки туда, откуда они пришли, чтобы избежать плагизма. Также форматируйте кавычки как «кавычки», чтобы было очевидно, что вы цитируете внешний источник. – Liam
@Liam. Я не знал, как процитировать некоторый текст, я искал об этом. Это одна из причин, по которой я установил прямую ссылку на официальную документацию. Я искал, как это сделать, когда вы обновляете мой ответ;) – AdrienTorris
Не беспокойтесь, просто хотел подчеркнуть это на самом деле. Хороший ответ – Liam