自定义连接字符串到实体框架

时间:2013-04-12 04:59:02

标签: .net entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5

如何将自定义连接字符串分配给实体框架?默认情况下,实体框架从Web配置文件或应用程序配置文件中读取连接字符串。我想在字符串变量中创建连接字符串,并将连接分配给实体框架。因此,实体框架从该连接字符串创建连接桥。

我们也可以在运行时将其称为实体框架连接字符串。

请帮助我如何做到这一点。

2 个答案:

答案 0 :(得分:1)

实体框架上下文继承自DbContext。通过编辑TextTemplate文件,您可以添加新的构造函数并使用ConnectionString。

明显的起点就在这里(Context.tt第57行EF5):

<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext
{
    public <#=code.Escape(container)#>()
        : base("name=<#=container.Name#>")
    {
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
        this.Configuration.LazyLoadingEnabled = false;
<#
}

这里tt生成构造函数,该构造函数调用DbContext的Base构造函数。这是你的钩子。

答案 1 :(得分:1)

最简单的方法是在DAL中创建一个继承Datacontext类的部分类,这个类有一个简单的构造函数,允许将连接字符串传递给类并创建DataContext实体。

现在为了简化99%的项目和解决方案,我创建了一个无参数构造函数,它通过在我的数据访问层中创建的自定义配置部分读取静态连接字符串。因此,我只需调用一个新的Class(),然后使用在实例中创建的配置为我创建DataContext。这样可以在多个程序集,项目(和项目类型)中轻松使用,从而使部署和配置变得非常简单。

这是一个使用配置处理程序的简单类结构的示例,并支持多个项目。

首先,正常创建数据上下文。然后创建一个局部类来扩展它类似的东西。

http://forums.asp.net/t/1747809.aspx/1