Entity Framework、Asp.Net 标识且不维护 2 个连接字符串

Entity Framework, Asp.Net Identity and not maintaining 2 connection strings

我正在启动一个 MVC 网络应用程序,使用新的 Asp.Net 标识位,并将使用 Entity Framework。

身份需要一个 "normal" 连接字符串,如下所示:

<add name="DefaultConnection" connectionString="data source=.;initial catalog=MyDB;integrated security=True;" providerName="System.Data.SqlClient" />

和 Entity Framework 开箱即用,连接字符串如下:

<add name="MyDBEntities" connectionString="metadata=res://*/Data.MyApp.csdl|res://*/Data.MyApp.ssdl|res://*/Data.MyApp.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=MyDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我不想在 Web.Config 中维护 2 个连接字符串。

我生成的 EF DBContext class 如下所示:

public partial class MyDBEntities : DbContext
{
    public MyDBEntities()
        : base("name=MyDBEntities")
    {
    }

使用 DefaultConnection 连接字符串实例化 MyDBEntities 的最简单方法是什么?我知道 EF 当然需要一些额外的东西,我很欣赏有编程的方式来建立连接。

我是否需要使用构造函数创建一个单独的部分 class,以便当我从数据库重新生成时它不会被吹走?

谢谢!

您可以使用身份连接字符串,然后使用 EntityConnectionStringbuilder (https://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnectionstringbuilder%28v=vs.110%29.aspx) 为您的实体连接构建连接字符串。您需要创建一个部分 class,它允许您从该连接字符串实例化 DbContext 而不是命名的连接字符串,它只会从 app.config 或 web.config 中查找相应的连接字符串。或者您可以修改生成实体上下文的模板 class.