【问题标题】:Entity Framework and Membership Provider not working实体框架和成员资格提供程序不起作用
【发布时间】:2015-12-07 16:07:00
【问题描述】:

我有一个使用 Asp.net Membership 提供程序的应用程序。我将此项目转换为 EF4 并尝试使用相同的身份验证。

我使用旧数据库作为连接

<add name="Entities1" 
     connectionString="metadata=res://*/DbContext.csdl|res://*/DbContext.ssdl|res://*/DbContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Master.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />
<add name="PondsMasterEntities" 
     connectionString="metadata=res://*/DbContext.csdl|res://*/DbContext.ssdl|res://*/DbContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\PondsMaster.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

现在我以这个错误结束。

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例不存在

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

但是当我这样使用时。我可以从数据库中添加删除条目。

private Entities1 db = new Entities1();
db.IssueMasterLogs.Add(log);

有什么想法吗?

【问题讨论】:

  • 你能显示你的IdentityDbContextclass(或你继承的类)吗?您可能正在为 asp.net Identity 使用不同的连接字符串
  • 公共类 ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } }
  • 感谢 A. Burak Erbora。将 DefaultConnection 更改为我的实体连接后,出现此错误。实体类型 ApplicationUser 不是当前上下文模型的一部分

标签: asp.net-mvc entity-framework-4


【解决方案1】:

看起来您正在为使用 ASP.Net Identity 的项目使用数据库优先方法和现有数据库。默认情况下,Identity (V2) 使用代码优先的方法,在数据库中创建它所需的表。通常,人们最终会因此拥有一个单独的 Identity 连接字符串(即使两个连接字符串都指向同一个数据库)。

在您的情况下,只需将 DefaultConnection 身份使用切换到您的连接 Entities1 将无济于事,因为它不是代码优先。但是,您可以保留 DefaultConnection 并将其修改为指向您的数据库,然后继续使用它的代码。如果这样做,您将拥有两个连接字符串(Entities1DefaultConnection),它们都指向同一个数据库,并且分别是数据库优先和代码优先。

对于 db 首先是使用 Identity 的方法,您可能需要查看 this

【讨论】:

  • 是的,添加默认连接有效。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-19
  • 1970-01-01
相关资源
最近更新 更多