生成的Entity Framework Entities文件中的默认构造函数如下:
public ProjectEntities() : base("name=ProjectEntities", "ProjectEntities")
{
this.OnContextCreated();
}
我想将其更改为:
public ProjectEntities() : base(UtilClass.GetEnvDependantConnectionStringName(), "ProjectEntities")
{
this.OnContextCreated();
}
这是因为我希望为所有开发环境和生产环境提供不同的连接字符串,并且它们不会混淆(这是我的自定义方法检查的)。
我该怎么做?每次重新生成设计器文件时,都会抛弃此代码。
答案 0 :(得分:0)
您需要在自动创建的ProjectEntities.Designer.cs旁边创建另一个文件,比如ProjectEntities.cs。您可以使用partial来扩展实体类的功能,如下所示:
public partial class ProjectEntities : ObjectContext
{
partial void OnContextCreated()
{
this.Connection.ConnectionString = UtilClass.GetEnvDependantConnectionString();
}
}
重新生成.Designer.cs文件时,文件不会被更改。你必须自己获取连接字符串......
答案 1 :(得分:0)
我们通过调用我们的实体ProjectEntitiesPrivate来修复它,之前的partial class ProjectEntities
是什么,现在是非局部class ProjectEntities : ProjectEntitiesPrivate
,带有我需要的构造函数:
public class ProjectEntities: ProjectEntitiesPrivate
{
public ProjectEntities():base(UtilClass.GetEnvDependantConnectionStringName())
{
}
....