Entity Framework 和会员提供者不工作
Entity Framework and Membership Provider not working
我有一个使用 Asp.net 会员提供程序的应用程序。我将此项目转换为 EF4 并尝试使用相同的身份验证。
我使用旧数据库进行连接,因为
<add name="Entities1"
connectionString="metadata=res://*/DbContext.csdl|res://*/DbContext.ssdl|res://*/DbContext.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Master.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
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="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\PondsMaster.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
现在我以这个错误结束。
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. The specified LocalDB instance does not exist
在
var result = await UserManager.CreateAsync(user, model.Password);
但是当我这样使用的时候。我可以从数据库中添加删除条目。
private Entities1 db = new Entities1();
db.IssueMasterLogs.Add(log);
有什么想法吗?
看起来您正在为使用 ASP.Net Identity 的项目使用数据库优先方法和现有数据库。默认情况下,Identity (V2) 使用代码优先方法,在数据库中创建它所需的表。通常,人们最终会因此而拥有一个单独的身份连接字符串(即使两个连接字符串都指向同一个数据库)。
在你的情况下,简单地将 DefaultConnection
身份用于你的连接 Entities1
将无济于事,因为它不是代码优先。但是,您可以保留 DefaultConnection
并将其修改为指向您的数据库,并首先继续使用它的代码。如果这样做,您将有两个连接字符串(Entities1
和 DefaultConnection
),它们都指向同一个数据库并且分别是数据库优先和代码优先。
对于 db first a approach with Identity,您可能想看看 this。
我有一个使用 Asp.net 会员提供程序的应用程序。我将此项目转换为 EF4 并尝试使用相同的身份验证。
我使用旧数据库进行连接,因为
<add name="Entities1"
connectionString="metadata=res://*/DbContext.csdl|res://*/DbContext.ssdl|res://*/DbContext.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Master.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
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="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\PondsMaster.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
现在我以这个错误结束。
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. The specified LocalDB instance does not exist
在
var result = await UserManager.CreateAsync(user, model.Password);
但是当我这样使用的时候。我可以从数据库中添加删除条目。
private Entities1 db = new Entities1();
db.IssueMasterLogs.Add(log);
有什么想法吗?
看起来您正在为使用 ASP.Net Identity 的项目使用数据库优先方法和现有数据库。默认情况下,Identity (V2) 使用代码优先方法,在数据库中创建它所需的表。通常,人们最终会因此而拥有一个单独的身份连接字符串(即使两个连接字符串都指向同一个数据库)。
在你的情况下,简单地将 DefaultConnection
身份用于你的连接 Entities1
将无济于事,因为它不是代码优先。但是,您可以保留 DefaultConnection
并将其修改为指向您的数据库,并首先继续使用它的代码。如果这样做,您将有两个连接字符串(Entities1
和 DefaultConnection
),它们都指向同一个数据库并且分别是数据库优先和代码优先。
对于 db first a approach with Identity,您可能想看看 this。