[英]EntityFramework dependency injection of DatabaseContext on Asp.Net
我對 Asp 和 Entity Framework 了解不多,所以我真的不知道我必須做什么。 我的問題是從主要的 asp 方法訪問數據庫上下文 - 在 Program.cs(主要)中創建和使用數據庫上下文的方式
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<DatabaseContext>(
options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultDataSource"))
);
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var context = services.GetRequiredService<DatabaseContext>();
context.Database.EnsureCreated();
}
所以我的問題是我從“builder.Configuration”中為 DatabaseContext 構造函數制作“選項”
但是當我需要從其他腳本訪問數據庫時我該怎么辦? DatabaseContext 需要配置,但我只是不知道如何在該構建器之外獲取它。 一個人建議我使用依賴注入,我看過了,但我就是不知道如何正確地做到這一點,就像我創建了一個 class 來初始化數據庫上下文,但我仍然需要以某種方式在這里進行配置,我真的不知道如何。 這可能是一個非常愚蠢的問題,但我真的幾天都弄不明白:D
我試過在沒有配置的情況下制作 DbContext 但它給出了錯誤
我不知道你試過什么,但我想這可能就是你想要的。
假設你的DatabaseContext
class是最基本的,並且在里面定義了一個表Users
:
public class DatabaseContext : DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options)
: base(options)
{
}
public DbSet<Models.User> Users { get; set; }
}
然后在Program.cs
中注冊它:
builder.Services.AddDbContext<DatabaseContext>(
options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultDataSource"))
);
您可以通過遷移和更新數據庫來生成您的數據庫(當然您也可以手動創建):
Add-Migration InitialCreate
Update-Database
然后你可以通過依賴注入在其他類中訪問你的數據庫,比如在controller:
public class HomeController : Controller
{
private readonly DatabaseContext _databaseContext;
public HomeController(DatabaseContext databaseContext)
{
_databaseContext = databaseContext;
}
public IActionResult Index()
{
var user = _databaseContext.Users.ToList();
return View();
}
}
有關依賴注入的更多詳細信息,您可以參考此文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.