【发布时间】:2015-04-15 18:43:56
【问题描述】:
我是 EF6 上的代码优先方法的新手。所以请见谅
我正在尝试为我的本地项目实施 AspNetIdentityframework。
我在数据库中拥有所有开箱即用的表。我保持与模型类结构相同。我没有角色只有 1 个角色。
这是我的 DbContext 类。
public class AuthDbContext : IdentityDbContext<IdentityUser>
{
public AuthDbContext()
: base("AuthDbContext")
{
Database.SetInitializer<AuthDbContext>(null);
}
public virtual DbSet<AspNetRole> AspNetRoles { get; set; }
public virtual DbSet<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual DbSet<AspNetUserLogin> AspNetUserLogins { get; set; }
public virtual DbSet<AspNetUser> AspNetUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(t => t.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(t => t.Id);
modelBuilder.Entity<IdentityUser>().HasKey<string>(t => t.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(t => new { t.RoleId,t.UserId});
modelBuilder.Ignore<IdentityUserRole>();
modelBuilder.Ignore<AspNetRole>();
}
我在表中有 2 个用户。我正在努力寻找一个。 我收到错误 Invalid Column Name 'Discriminator' 我在生成模型时做错了什么? 我尝试了很多选项我无法解决这个问题
这里是userManager.FindByName方法生成的sql
exec sp_executesql N'SELECT
[Limit1].[C1] AS [C1],
[Limit1].[Id] AS [Id],
[Limit1].[Email] AS [Email],
[Limit1].[EmailConfirmed] AS [EmailConfirmed],
[Limit1].[PasswordHash] AS [PasswordHash],
[Limit1].[SecurityStamp] AS [SecurityStamp],
[Limit1].[PhoneNumber] AS [PhoneNumber],
[Limit1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed],
[Limit1].[TwoFactorEnabled] AS [TwoFactorEnabled],
[Limit1].[LockoutEndDateUtc] AS [LockoutEndDateUtc],
[Limit1].[LockoutEnabled] AS [LockoutEnabled],
[Limit1].[AccessFailedCount] AS [AccessFailedCount],
[Limit1].[UserName] AS [UserName]
FROM ( SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[Email] AS [Email],
[Extent1].[EmailConfirmed] AS [EmailConfirmed],
[Extent1].[PasswordHash] AS [PasswordHash],
[Extent1].[SecurityStamp] AS [SecurityStamp],
[Extent1].[PhoneNumber] AS [PhoneNumber],
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed],
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled],
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc],
[Extent1].[LockoutEnabled] AS [LockoutEnabled],
[Extent1].[AccessFailedCount] AS [AccessFailedCount],
[Extent1].[UserName] AS [UserName],
''0X0X'' AS [C1]
FROM [dbo].[AspNetUsers] AS [Extent1]
WHERE ([Extent1].[Discriminator] = N''User'') //Error here ?????????
AND (((UPPER([Extent1].[UserName])) = (UPPER(@p__linq__0))) OR ((UPPER([Extent1].[UserName]) IS NULL) AND (UPPER(@p__linq__0) IS NULL)))
) AS [Limit1]',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'testUser'
【问题讨论】:
标签: entity-framework-6 asp.net-identity code-first