【发布时间】:2018-11-20 03:29:55
【问题描述】:
我也设置了 .net 核心项目和数据库上下文。但是由于这个错误,我还不能开始使用 dbContext-
"没有给出与所需形式相对应的参数 参数'选项'"
控制器:
public IActionResult Index()
{
using (var db = new BlexzWebDb())
{
}
return View();
}
数据库上下文代码:
public class BlexzWebDb : DbContext
{
public BlexzWebDb(DbContextOptions<BlexzWebDb> options)
: base(options)
{ }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<AssignedRole> AssignedRoles { get; set; }
}
附上错误图片。该问题的可能解决方法是什么? 提前致谢
【问题讨论】:
-
@Stefan 代码已添加
-
@johnCogdle 您的数据上下文 (BlexzWebDb) 的邮政编码
-
您需要阅读 ASP.NET Core 中的依赖注入:docs.microsoft.com/en-us/aspnet/core/fundamentals/…。你试图做的事情根本上是错误的。
-
@SOusedtobegood 这绝不是根本错误的。您不知道 OP 正在为此开展的项目的要求、时间或金钱限制、质量属性或任何其他要求。这是在正确的情况下做事的一种非常有效的方式。确实,使用 DI 可以实现很多事情,但即使是 Microsoft 也不会从中产生问题:
Instance pooling can increase throughput in high-scale scenarios such as web servers by re-using DbContext instances, rather than creating new instances for each request.请注意,其中没有“你做对了”。 -
完全同意@Zimano - 从根本上来说并没有错。当您只需要一个连接时,这只是一种简单的连接方式。如果您需要动态建立连接,例如当您想在使用 asp.net web api 时摆脱多租户数据库架构时怎么办?我可以想象的前进方式是不依赖依赖注入,而是根据请求创建一个 dbcontext 对象并将其动态指向用户的个人数据库。我看不到通过 DI(EF 5.0 之前)实现此目的的方法
标签: c# asp.net-core .net-core entity-framework-core