实体框架3.5:更改实体类的构造函数

时间:2011-11-23 12:16:47

标签: entity-framework

生成的Entity Framework Entities文件中的默认构造函数如下:

public ProjectEntities() : base("name=ProjectEntities", "ProjectEntities")
{
    this.OnContextCreated();
}

我想将其更改为:

public ProjectEntities() : base(UtilClass.GetEnvDependantConnectionStringName(), "ProjectEntities")
{
    this.OnContextCreated();
}

这是因为我希望为所有开发环境和生产环境提供不同的连接字符串,并且它们不会混淆(这是我的自定义方法检查的)。

我该怎么做?每次重新生成设计器文件时,都会抛弃此代码。

2 个答案:

答案 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())
    {

    }

....