本文写于2016年12月20日,本以为报错的问题彻底解决了,没想到重启之后还是存在问题,后来发现是连接字符串的问题。其中差异后续再补一篇。
继续昨天的工作。
昨天解决了一个连接的问题,本以为没事儿了,可惜在后面的测试中发现依旧有新的问题出现,具体的现象暂时不描述了,大致的意思就是数据库不可用。
经过一晚上的查阅,终于找到了眉目,Identity2 貌似不支持 EntityFramework 的连接方式,于是数据库的连接也是有问题的,而能正常工作的连接字符串如下:
<add name="EntityModel" connectionString="Data Source=localhost;Initial Catalog=Identity;Persist Security Info=True;User Id=sa;Password=root;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
具体原因没法深究,猜测原因应该就是 Identity2 本身的特性决定的,关于上面的数据库连接字符串的展开找到一篇文章,写得还可以,参考如下:
Code First 与 DataBase First(.edmx)的区别
另外在官方网站找到一段构造连接字符串的代码:
// Specify the provider name, server and database.
string providerName = "System.Data.SqlClient";
string serverName = ".";
string databaseName = "AdventureWorks";
// Initialize the connection string builder for the
// underlying provider.
var sqlBuilder = new SqlConnectionStringBuilder();
// Set the properties for the data source.
sqlBuilder.DataSource = serverName;
sqlBuilder.InitialCatalog = databaseName;
sqlBuilder.IntegratedSecurity = true;
// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();
// Initialize the EntityConnectionStringBuilder.
varentityBuilder = new EntityConnectionStringBuilder();
//Set the provider name.
entityBuilder.Provider = providerName;
// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;
// Set the Metadata location.
entityBuilder.Metadata = @"res://*/AdventureWorksModel.csdl|
res://*/AdventureWorksModel.ssdl|
res://*/AdventureWorksModel.msl";
Console.WriteLine(entityBuilder.ToString());
using (var conn = new EntityConnection(entityBuilder.ToString()))
{
conn.Open();
Console.WriteLine("Just testing the connection.");
conn.Close();
}
数据库又能正常工作以后,可以继续进行与原有数据的合并。在博客园找到两篇比较不错的文章,关于集成 Identity2 的内容,讲到了一些常见的点和很多人会遇到的疑问:
ASP.NET Identity 2集成到MVC5项目01
ASP.NET Identity 2集成到MVC5项目02
在对 Identity2 的 User 表与原有数据库的用户表进行一一关联时,发现无法进行操作,而且建成的 EntityFramework 关系竟然是一对多的,虽然在数据库中显示的是一对一,纠结了半天无解,只好先放着,因为基本上也不影响使用场景。然后改写了了一下注册代码,将测试数据中的用户完成了注册。中途又出现了数据库连接问题,不过这次是 VS 的问题,在调试结束第二次启用时,需要重新清理生成,要不数据库连接可能无法释放,造成无法连接。
网友评论