如何在解决方案中的所有项目之间共享LocalDB实例?

时间:2013-04-11 23:20:09

标签: .net visual-studio localdb

我有一个像这样的VS 2012解决方案:

  • EF模型项目
  • EF模型测试项目
  • ASP.NET MVC 4应用程序
  • WCF数据服务项目

在开发期间,我想使用LocalDB作为EF的后备数据库。 MVC& WCF项目都使用EF模型来访问数据库中的数据。我想在所有项目(MVC,WCF和测试)中共享相同的LocalDB实例,但似乎无法正确设置web.config的设置。

我也希望这个项目设置可以在开发人员机器上移植,IE没有绝对路径。

测试项目创建&适用于c:\ users \\。mdf中的数据库。 MVC& WCF项目希望该文件驻留在AppData文件夹中。我已根据需要手动复制它,但很明显,当应用程序更改数据时,它们会不同步。

有关如何配置项目以与相对路径共享同一实例的任何建议或示例?

3 个答案:

答案 0 :(得分:1)

将minhcat_vo的示例放在一起让我找到了解决方案。

当您没有指定与DbContext派生类型的名称匹配的显式连接字符串(或者您设置为注释的任何内容)时,遇到的问题就发生了。项目类型之间的行为不同:

  • 在测试项目中,它使用本地数据库目录和DbContext的FQDN,MDF文件位于\\。mdf。
  • 在ASP.NET MVC项目中,它尝试从\ app_data \ .mdf加载mdf

我在将我的EF项目移动到MySQL时偶然发现了解决方案。在任何情况下,MySQL EF提供程序都不会回退到DefaultConnection连接字符串(我想除非你的DbContext显式选择它)。为了让MySQL-EF正常工作,我必须输入一个匹配上下文的连接字符串。这让我得到了我正在寻找的答案。通过对我的所有项目使用以下连接字符串,它们共享相同的MDF文件/ LocalDB实例:

<add name="ThingsContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Things;Integrated Security=SSPI" />

WhereContext是我项目的DbContext实例。您可以看到我的示例解决方案@ https://github.com/drdamour/SharedLocalDB

答案 1 :(得分:0)

  

我想在所有项目(MVC,WCF和测试)中共享相同的LocalDB实例,但似乎无法正确设置web.config的设置

这可能是你的连接字符串问题。

  

有关如何配置项目以与相对路径共享同一实例的任何建议或示例?

是的,您可以在每个项目的web.config中使用相对路径。但是,您可以使用 ConfigurationManager 来处理它。

答案 2 :(得分:0)

我可能错了,一个localDB一次只能访问一个应用程序。如果您希望同时由多个应用程序访问一个数据库,请将LocalDB附加到快速版SQL服务器。使用表单身份验证为每个应用程序创建快速用户。使用用户名和密码更改ConnectionString以表示sql。你很高兴。