gpt4 book ai didi

c# - 更改 ASP.NET Identity 以使用现有数据库

转载 作者:太空狗 更新时间:2023-10-29 23:14:26 25 4
gpt4 key购买 nike

我将 ASP.NET MVC 5 与数据库优先工作流一起使用。我已经在现有数据库中创建了身份表(AspNetUsersAspNetRoles 等),但是我在获取register 和< strong>login 功能才能正常工作。

这是 IdentityModels.cs

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("MyConnectionString") // I use "MyConnectionString" instead of "DefaultConnection"
{
}

这是 web.config 中的 EF 连接字符串的样子

<connectionStrings><add name="MyConnectionString" connectionString="metadata=res://*/Entities.MyModel.csdl|res://*/Entities.MyModel.ssdl|res://*/Entities.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=My-Pc\SQLEXPRESS;initial catalog=MyExistingDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

为了更好的衡量,这里是从 edmx 生成的上下文类

public partial class MyConnectionString : DbContext
{
public MyConnectionString()
: base("name=MyConnectionString")
{
}

对我来说一切似乎都很好,它应该能够在数据库中创建用户但是我在登录或尝试分别注册时收到以下错误:

登录方式:

The entity type ApplicationUser is not part of the model for the current context

Line 73: var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

Exception Details: System.InvalidOperationException: The entity type ApplicationUser is not part of the model for the current context.

注册:

The entity type ApplicationUser is not part of the model for the current context

Line 155: var result = await UserManager.CreateAsync(user, model.Password);

Exception Details: System.InvalidOperationException: The entity type ApplicationUser is not part of the model for the current context.

周围的大多数文章似乎都集中在代码优先以及如何从 LocalDb 转到 SQLExpress 等以及如何更改连接字符串,但是我已经很长时间没能解决这个问题了。

编辑、解决方案:正如@ChrFin 提到的,您可以同时使用它们,这就是我最终所做的。我只是添加了一个新的 regular web.config 中的连接字符串,并让它指向现有的数据库。附言。请记住,连接字符串名称不能与现有名称相同,并且必须与您提供给 ApplicationDbContext 构造函数的名称相同。

最佳答案

我认为 ASP.NET Identity 不支持这种情况,因为它需要 DbContext延伸IdentityDbContext<ApplicationUser> (或类似的)。

为什么要将身份强制纳入 DB-First 上下文?
您可以毫无问题地将代码优先上下文与其他数据库优先上下文一起用于标识...

关于c# - 更改 ASP.NET Identity 以使用现有数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25866700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com