【问题标题】:EF4 code first create connection string programmaticalyEF4 代码首先以编程方式创建连接字符串
【发布时间】:2011-11-23 22:12:25
【问题描述】:

我正在使用实体框架代码优先方法 (C#-WPF) 成功创建数据库 (SQL Ce)。我正在尝试模拟每个项目的数据库创建。这意味着用户可以打开文件对话框窗口,为项目选择/创建所需的文件夹,然后访问现有的或创建新的数据库。这让我想到了一个问题,我如何为每个特定项目创建/读取数据库连接文件。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="NerdDinners"
         connectionString="Data Source=\Projects\NerdDinners.sdf"
         providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>
</configuration>

【问题讨论】:

  • 这有点离题,但我建议使用 NHibernate 而不是 EF。我一开始尝试使用 EF,但后来我发现 NHibernate 很容易为 Code-First 方法配置。如果您愿意,我可以为您提供快速入门指南的链接。
  • 实际上 EF 和 poco 对于代码优先方法来说很容易,但这似乎更多的是个人喜好问题。一开始我打算将 NHibernate 与 SQLite 一起使用,但由于研究时间有限而放弃了这个想法。不过,我对任何其他替代方法持开放态度。谢谢

标签: wpf visual-studio-2010 entity-framework entity-framework-4 entity-framework-4.1


【解决方案1】:

您的连接字符串存储在您的 app.config 中。执行 WPF 程序时,您只能访问正在执行的程序集的当前 app.config。所以没有默认方式为每个项目打开不同的 app.config 文件。

但是,您可以使用 OpenExeConfiguration 指定配置文件的路径。

或者您可以在正在执行的应用程序的 app.config 中保存多个配置字符串,并为它们指定不同的名称。使用SqlConnectionStringBuilder可以管理字符串的内容。

【讨论】:

  • 实际上我不会在应用程序启动时加载默认项目。流程如下:启动app->创建项目(新建文件夹、新建连接文件、新建数据库)->加载项目(读取连接文件并加载数据库)
  • 然后您可以使用 SqlConnectionStringBuilder 构建一个指向您的项目/数据库的连接字符串,并将其传递给您的 DbContext 的构造函数,以便它将使用此连接字符串。
  • 感谢您指出正确的方向...您是否有任何样本可以重现上述连接字符串?
  • 嗨,我已经设法使用stackoverflow.com/questions/7458513/… 完成了它并发布了它webpixel.gr/blog/net-blog/…
猜你喜欢
  • 2015-02-25
  • 2011-08-25
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多