Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体类型ApplicationUser不是当前上下文模型的一部分_C#_Asp.net_Entity Framework_Asp.net Identity_Owin - Fatal编程技术网

C# 实体类型ApplicationUser不是当前上下文模型的一部分

C# 实体类型ApplicationUser不是当前上下文模型的一部分,c#,asp.net,entity-framework,asp.net-identity,owin,C#,Asp.net,Entity Framework,Asp.net Identity,Owin,我已经设置了一个新的asp.net web窗体应用程序。我想使用我自己的实体框架数据模型,使用提供的owin身份验证创建登录和注册功能 我已将连接字符串从默认值更改为IdentityModels.cs,但在使用登录名时,我收到上述错误 代码与默认值保持不变,当我将ApplicationDBContext更改回DefaultConnection时,它将按预期工作 我可以访问数据库中的数据,因为我使用linq查询来检查输入的电子邮件和密码 在登录用户控件内的以下行上引发错误: var result

我已经设置了一个新的asp.net web窗体应用程序。我想使用我自己的实体框架数据模型,使用提供的owin身份验证创建登录和注册功能

我已将连接字符串从默认值更改为IdentityModels.cs,但在使用登录名时,我收到上述错误

代码与默认值保持不变,当我将ApplicationDBContext更改回DefaultConnection时,它将按预期工作

我可以访问数据库中的数据,因为我使用linq查询来检查输入的电子邮件和密码

在登录用户控件内的以下行上引发错误:

 var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false);
要使owin身份验证与提供的DefaultConnection之外的数据库一起工作,我需要做些什么吗

代码片段:

生成的寄存器:

生成的应用程序用户

公共类应用程序用户:IdentityUser
{
公共索赔实体生成安全性(ApplicationUserManager)
{
//注意authenticationType必须与CookieAuthenticationOptions.authenticationType中定义的类型匹配
var userIdentity=manager.CreateIdentity(这是DefaultAuthenticationTypes.ApplicationOkie);
//在此处添加自定义用户声明
返回用户身份;
}
公共任务GenerateUserIdentityAsync(ApplicationUserManager)
{
返回任务.FromResult(GenerateUserIdentity(manager));
}
}
“我的用户”表中的字段远不止用户名、电子邮件和密码。这是否可能引起问题

背景:

public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“MyDBEntities”,throwifvv1schema:false)
{
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
}

看起来您没有数据库初始值设定项,因此默认行为是CreateDatabaseIfNotExists。因此,要么删除现有数据库,让EF使用identity stuff创建它,要么在构造函数中更改模型时将初始值设定项切换到DropCreateDatabase:

static ApplicationDbContext() {
    Database.SetInitializer(new DropCreateDatabaseWhenModelChanges<ApplicationDbContext>());
}
static ApplicationDbContext(){

Database.SetInitializer(新建DropCreateDatabaseWhenModelChanges

看起来您没有数据库初始值设定项,因此默认行为为CreateDatabaseIfNotExists。因此,请删除现有数据库并让EF使用标识内容创建它,或者在构造函数中将初始值设定项切换到DropCreateDatabaseWhenModelChanges:

static ApplicationDbContext() {
    Database.SetInitializer(new DropCreateDatabaseWhenModelChanges<ApplicationDbContext>());
}
static ApplicationDbContext(){

Database.SetInitializer(new DropCreateDatabaseWhenModelChanges

您可能想在此处检查此答案,谢谢您的回复。我之前确实看过这篇文章,但不确定当用户将用户名数据传递给空构造函数时,此代码将如何工作。此用户代码与visual studio为我生成的代码完全不同,我无法确定找到解决我问题的方法。我会在这篇文章中添加一些代码。你能为你的上下文显示代码吗?没问题,刚刚发布。请看,共识是“不,他们不应该”!您可能想在此处检查此答案谢谢您的回复。我之前确实看过这篇文章,但不确定当用户将用户名数据传递给空构造函数时,此代码将如何工作。此用户代码与visual studio为我生成的代码大不相同,我无法找到解决问题的方法。我将添加这篇文章的一些代码。你能为你的上下文显示代码吗?没问题,刚刚发布。请看,其中的共识是“不,他们不应该”!
var myUser = db.Dat_Account
                    .FirstOrDefault(u => u.UserName == Email.Text
                    && u.Password == Password.Text);
public class ApplicationUser : IdentityUser
    {
        public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = manager.CreateIdentity(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }

        public Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager)
        {
            return Task.FromResult(GenerateUserIdentity(manager));
        }
    }
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
        : base("MyDBEntities", throwIfV1Schema: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
static ApplicationDbContext() {
    Database.SetInitializer(new DropCreateDatabaseWhenModelChanges<ApplicationDbContext>());
}