asp.net Identity具体功能暂不在此细说,下面主要介绍几点连接oracle注意的事项,
1.首先下载连接oracle驱动Oracle.ManagedDataAccess.dll和Oracle.ManagedDataAccess.EntityFramework.dll这个是连接oracle的基础。
2.在Nuget下安装Microsoft.AspNet.Identity.EntityFramework.dll和Microsoft.AspNet.Identity.Core.dll 和Microsoft.AspNet.Identity.Owin.dll。
3.更新Microsoft.AspNet.Identity.EntityFramework下的连接数据的modelBuilder.HasDefaultSchema("HB");,Microsoft.AspNet.Identity.EntityFramework默认情况是SQLserver下“dbo”,所以要更改其Schema为你用的oracle的用户名。
备注,
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
前面查资料看到有的文章下把
ApplicationDbContext.cs下改成
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("HB");
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
// modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
}
改成这样后会报错
ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB
这个
OnModelCreating会继承DbContext下面的方法。没有调用Microsoft.AspNet.Identity.EntityFramework里的,
所以我解决的办法是把Microsoft.AspNet.Identity.EntityFramework修改,
修改之后在
OnModelCreating下加这一行。
modelBuilder.HasDefaultSchema("HB");然后就可以操作oracle了。
如有更好asp.net Identity 连接oracle 办法,请告知,谢谢。
来源:oschina
链接:https://my.oschina.net/u/4302015/blog/4450431