【问题标题】:changing database in entity framework c#.net在实体框架c#.net中更改数据库
【发布时间】:2012-07-30 07:23:05
【问题描述】:

让我们考虑列出的实体类

public NerdDinnerEntities() : base("name=NerdDinnerEntities", "NerdDinnerEntities")
        {

            this.ContextOptions.LazyLoadingEnabled = true;

            OnContextCreated();
        }

        /// <summary>
        /// Initialize a new NerdDinnerEntities object.
        /// </summary>
        public NerdDinnerEntities(string connectionString) : base(connectionString, "NerdDinnerEntities")
        {
            this.ContextOptions.LazyLoadingEnabled = true;

            OnContextCreated();
        }



        /// <summary>
        /// Initialize a new NerdDinnerEntities object.
        /// </summary>
        public NerdDinnerEntities(EntityConnection connection) : base(connection, "NerdDinnerEntities")
        {
            this.ContextOptions.LazyLoadingEnabled = true;
            OnContextCreated();
        }  

这些在 web 配置文件中被读取为

<add name="NerdDinnerEntities" 
    connectionString="metadata=res://*/Models.NerdDinner.csdl|res://*/Models.NerdDinner.ssdl|res://*/Models.NerdDinner.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=*;
    Initial Catalog=db;User ID=*;Password=****;
    MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

我的问题是我需要通过代码将数据库名称从 db 更改为 db1,而无需更改 web 配置文件。

作为一个名为 changedatabase() 的类名的实体......但我不知道如何使用它......

我的另一个问题是可以在这个项目中添加一个新的 dll 并在那里更改连接字符串元数据,只要在那里打开连接,它就会到达该 dll 并仅更改数据库名称并返回那个数据库...

等待您宝贵的命令和建议

【问题讨论】:

    标签: c# .net entity-framework entity


    【解决方案1】:
    public class MyEntities : NerdDinnerEntities
    {
      public MyEntities() : base(GetConnectionString())
      {
      }
    
      private string GetConnectionString()
      {
        var connectionString = System.Configuration.ConfigurationManager.
            ConnectionStrings["connectionStringName"].ConnectionString;
        var builder = new System.Data.Common.DbConnectionStringBuilder();
        builder.ConnectionString = connectionString;
        var internalConnectionString = builder["provider connection string"].ToString();
        var newConnectionString = internalConnectionString.Replace("oldDBName", "newDBName");
        builder["provider connection string"] = newConnectionString;
        return builder.ConnectionString;
      }
    }
    

    【讨论】:

    • 感谢发帖!我不知道在哪里使用此代码!你能说我吗!
    • 如果您希望此更改是永久性的,那么您可以替换 web.config 文件中的连接字符串,是的,您可以从 dll 中进行。
    • 是的,我希望通过 dll... . 给我一些建议
    • 以上是我的实体类,因为这个概念对我来说是新的我不知道如何继续使用 dll ?需要你的指导方针/......
    • 在继承的类(来自 NerdDinnerEntities)中,在无参数构造函数中添加此代码,并调用获取连接字符串作为参数的基类构造函数
    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 2010-09-05
    • 2017-11-12
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多