我试图通过关注this tutorial来了解ASP.NET Core的工作原理。它正确地指定,如果我想能够利用控制器脚手架的强大功能,我必须创建一个项目并指定身份验证为个人用户帐户。
执行此操作时,除了其他内容之外,它还会生成此类:ApplicationDbContext : IdentityDbContext<ApplicationUser>
。在几个继承级别之后,它继承DbContext
。
如果我想使用DbContext,为什么我不得不继承IdentityDbContext而不能简单地继承DbContext
?
是否可以使用我自己的身份验证结构,仍然可以使用控制器脚手架?
答案 0 :(得分:2)
我只是尝试了一下你可以将控制器搭建起来,但你需要先手动勾选一些东西。 intro to EF Core在理解必须如何设置方面可能会派上用场。
然后将 project.json 添加到EF Core和scaffolding所需的依赖项中:
"dependencies": {
...
//EF Core
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
//Scaffolding
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
}
},
"tools": {
...
// EF Core
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
//Scaffolding
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
},
创建要使用的模型类,例如:
public class Customer
{
public int CustomerId { get; set; }
[Required]
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
现在创建一个新的空DBContext
类,例如:
public class FooContext: DbContext
{
public FooContext(DbContextOptions<FooContext> options) : base(options)
{
}
}
然后使用您的上下文类更新Startup.ConfigureServices
:
services.AddDbContext<FooContext>(options =>
options.UseSqlServer(Configuration["Data:FooContext:ConnectionString"]));
您还需要appsettings.json中的连接字符串。如果启动一个新项目,可以使用localdb添加一个:
"Data": {
"FooContext": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=FooContext-d69c2d45-f845-4069-92ed-2486567146cb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
使用localdb时,可以通过添加初始迁移和更新数据库来创建数据库。从项目根目录运行以下命令:
dotnet ef migrations add initial
dotnet ef database update
在使用脚手架选项之前,请确保在执行这些步骤后重建项目。
Startup.ConfigureServices
。 (您仍然需要创建数据库,例如添加并运行初始迁移)如果您运行该项目,您将看到可以导航到生成的索引页面,如/customers
并查看空列表。 还有一件事!
您需要手动创建一个包含以下内容的新部分视图~/Views/Shared/_ValidationScriptsPartial.cshtml
:
<environment names="Development">
<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
</environment>
<environment names="Staging,Production">
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js"
asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"
asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive">
</script>
</environment>