如何在 class 文件中引用 DbContext .NET 6 EF
How to reference DbContext in a class file .NET 6 EF
更新:将 DI 添加到顶部。
@inject ApplicationDbContext 数据库
razor 页面之外。我有一个实用程序 class 并且需要从 EF 查询数据库以获取要填充到 razor 部分中的值。
在_MenuPartial中需要构造一个class并获取值
@{
WebMessageManagement wm = new WebMessageManagement(???dbcontext???);
wm.GetMessageCount(); //returns int
}
_Menu部分代码片段:
在 WebMessageManagement class 我有这个:
public class WebMessageManagement
{
ApplicationDbContext _db;
public WebMessageManagement(ApplicationDbContext db)
{
_db = db;
}
public int GetMessageCount()
{
var count = (from o in _db.WebMessages
where o.Id >= 3109
from t in o.Email
select t).Count();
return count;
}
}
普通的 razor 页面似乎注入了 ApplicationDbContext。但我正在创建一个 class 外部剃刀页面。我是否需要为非剃须刀再次设置此上下文?
注入将对象放入到控制器的网络请求中(99% 的时间,除非你做的事情非常花哨)。在这种情况下,您可以将上下文作为变量传递给 class 函数。
WebMessageManagement wm = new WebMessageManagement();
wm.GetMessageCount(dbcontext); //returns int
然后在 class 文件中
public class WebMessageManagement
{
public WebMessageManagement()
{
}
public int GetMessageCount(ApplicationDbContext db)
{
var count = (from o in db.WebMessages
where o.Id >= 3109
from t in o.Email
select t).Count();
return count;
}
}
我想这会给你所需要的。
services.AddScoped<WebMessageManagement>()
更新:将 DI 添加到顶部。 @inject ApplicationDbContext 数据库
razor 页面之外。我有一个实用程序 class 并且需要从 EF 查询数据库以获取要填充到 razor 部分中的值。
在_MenuPartial中需要构造一个class并获取值
@{
WebMessageManagement wm = new WebMessageManagement(???dbcontext???);
wm.GetMessageCount(); //returns int
}
_Menu部分代码片段:
在 WebMessageManagement class 我有这个:
public class WebMessageManagement
{
ApplicationDbContext _db;
public WebMessageManagement(ApplicationDbContext db)
{
_db = db;
}
public int GetMessageCount()
{
var count = (from o in _db.WebMessages
where o.Id >= 3109
from t in o.Email
select t).Count();
return count;
}
}
普通的 razor 页面似乎注入了 ApplicationDbContext。但我正在创建一个 class 外部剃刀页面。我是否需要为非剃须刀再次设置此上下文?
注入将对象放入到控制器的网络请求中(99% 的时间,除非你做的事情非常花哨)。在这种情况下,您可以将上下文作为变量传递给 class 函数。
WebMessageManagement wm = new WebMessageManagement();
wm.GetMessageCount(dbcontext); //returns int
然后在 class 文件中
public class WebMessageManagement
{
public WebMessageManagement()
{
}
public int GetMessageCount(ApplicationDbContext db)
{
var count = (from o in db.WebMessages
where o.Id >= 3109
from t in o.Email
select t).Count();
return count;
}
}
我想这会给你所需要的。
services.AddScoped<WebMessageManagement>()