出于各种原因,我想不将我的Entity Framework数据库模型的连接字符串存储在各种.config文件中。 (我使用最新最好的DBContext API和新的Entity Framework 4.1,.NET 4和Visual Studio 2010 C#。)但是,DBContext的代码生成模板只创建一个无参数构造函数。 (如果我不使用DBContext API,那么我的实体框架模型有7种不同的构造函数可供选择,包括我想要的构造函数。)
我能弄清楚如何做到这一点的唯一方法是直接修改代码生成模板(context.tt文件)以给我我想要的构造函数(下面的示例代码)。这是有效的,但感觉就像我在“艰难的方式”这样做。获取接受连接字符串的DBContext构造函数的正确方法是什么?
public <#=Code.Escape(container)#>(string connectionString)
: base(connectionString)
{
<#
WriteLazyLoadingEnabled(container);
#>
}
最后一点,以防它可能对其他人有所帮助。虽然这种方法有效,但我花了一段时间才意识到“连接字符串”并不是严格意义上的数据库连接字符串,而是包含数据库连接字符串的特殊实体框架连接字符串(就像存储在应用程序中的那样) .config文件)。
答案 0 :(得分:3)
您的方法看起来是最正确的方法。这就是为t4模板创建的,你基本上做的是模型优先模板默认做的事情。
另一种可能性是使db上下文类为partial
(如果它不是默认值)并在其旁边创建另一个部分类文件以添加所需的构造函数。但是,您可能希望