自定义实体框架配置文件

时间:2014-06-25 07:32:40

标签: c# entity-framework configuration

我正在使用Entity Framework。连接字符串当前保存在app.config文件中,默认情况下会创建一个名为APPLICATION_NAME.exe.config的新文件,并在构建时将其复制到输出文件夹。

现在,当我创建应用程序时,我不希望我的连接字符串对全世界可见,因此一种方法是创建另一个配置文件作为资源并在应用程序中引用它。

修改

我正在使用WPF进行开发,现在有以下任何特殊配置:

  1. 如何在应用程序中注册嵌入式配置文件?

  2. 通常在创建自己的DbContext时,会像这样传递连接字符串

    public MyDBContext() : base("name=Connection_String_Name_In_AppConfig")
    

    那么如何告诉DbContext类从新创建的配置文件中获取连接字符串?

2 个答案:

答案 0 :(得分:0)

  

Q1。如何在应用程序中注册嵌入式配置文件

你没有。但是没有什么能阻止你做“编程”代码,它可以从你想要的任何地方获取你自己的配置信息并使用它。

  

Q2。如何告诉DBContext类从新创建的配置中获取数据库连接   文件?

你没有。但是你实际上可以传入一个代码创建的连接到DbCOntext,以防你在文档中没有看到。

严肃地说,在这里没有与WPF有任何关系,所以你添加的标签不是一个好的聪明之举。

答案 1 :(得分:0)

  1. 要将文件嵌入到程序集中,请在解决方案资源管理器中选择该文件,然后转到“属性”窗口,然后选择“构建操作”作为“嵌入式资源”,并将“复制到输出目录”选择为“不复制”。这样,XML配置文件将嵌入到程序集中。

  2. 现在在您的主机应用程序(此处为WPF)中,您可以读取资源文件内容,然后将连接字符串数据传递给您的DBContext。

  3. 从程序集中读取嵌入文件的示例:

    private const string strFileName = “XMLFile.config”;
    var assembly = Assembly.GetExecutingAssembly();
    var stream = assembly.GetManifestResourceStreamthis.GetType(), strFileName);
    var doc = new XmlDocument();
    
    try
    {
       if (stream == null)
       {
          throw new FileNotFoundException(“Couldnot find embedded mappings resource file.”,        strFileName);
       }
       doc.Load(stream);
    }
    catch (Exception ex)
    {
       throw ex;
    }
    

    希望这会对你有所帮助

    我在Github上托管了一个示例应用程序,它可以完全满足您的需求。