在Web Api 2中更改IdentityUser表的架构

Erd*_*kut 5 asp.net-mvc entity-framework asp.net-web-api asp.net-mvc-5 asp.net-web-api2

我正在使用Web Api 2.0和使用表单身份验证创建一个项目.我的问题是更改AspNet自动生成的表的默认模式名称.

例如;

dbo.AspNetUsers ---> User.AspNetUsers

我已经尝试使用ALTER SCHEMA查询在数据库中更改它们,我已将此模型添加到我的项目中

public class UserAccount:IdentityDbContext<IdentityUser>{
 .....
}
Run Code Online (Sandbox Code Playgroud)

但是我有以下错误;

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

知道如何解决这个问题.或者我可以将默认架构更改dbo为其他内容Owin

Erd*_*kut 6

我已经解决了这个问题,你可以看到我是怎么做到的

首先,我执行了以下查询

ALTER SCHEMA User TRANSFER dbo.AspNetUsers
Run Code Online (Sandbox Code Playgroud)

以及其他相关表格.

在应用程序中,我添加了带有空表集的edmx文件,并引用了下面的IdentityDbContext

public partial class LicaDatabaseEntities : IdentityDbContext<UserAccount>
{
    public LicaDatabaseEntities()
        : base("LicaDatabaseEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //throw new UnintentionalCodeFirstException();
        modelBuilder.HasDefaultSchema("User");
        base.OnModelCreating(modelBuilder);
    }

}
Run Code Online (Sandbox Code Playgroud)

在初创公司

UserManagerFactory =
            () => new UserManager<UserAccount>(new UserStore<UserAccount>(new LicaDatabaseEntities()));
Run Code Online (Sandbox Code Playgroud)


Ach*_*les 5

我现在使用最新版本的OWIN和EF(2015-02-26).
我改变了一些东西,它使用"Membership"SQL Schema而不是"dbo"

0-我改变了connectionString的名字:

<connectionStrings>
    <clear/>
    <add name="MembershipConnection" connectionString="Server=.;Integrated Security=True;Database=AWU" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

1-1-我改变了IdentityModels.cs这样:

public ApplicationDbContext() : base("MembershipConnection", throwIfV1Schema: false) { }
Run Code Online (Sandbox Code Playgroud)

1-2-我添加了这种覆盖方法 IdentityModels.cs

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
    modelBuilder.HasDefaultSchema("Membership");
    base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)

2-我改变了EF使用SQL的方式,因为我的机器上安装了"MS-SQL 2014"

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
    <parameters>
        <parameter value="MembrshipConnection"/>
    </parameters>
</defaultConnectionFactory>
Run Code Online (Sandbox Code Playgroud)

我相信最重要的部分是1-2告诉EF在创建SQL表时使用默认Schema.我没有触及OWIN的Startup.cs