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

标签 .net visual-studio localdb

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

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

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

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

    测试项目创建并使用 c:\users\\.mdf 中的数据库。 MVC 和 WCF 项目希望文件驻留在 AppData 文件夹中。我一直在根据需要手动复制它,但很明显,随着应用程序更改数据,它们变得不同步。

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

    最佳答案

    把 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" />
    

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

    关于.net - 如何在解决方案中的所有项目之间共享 LocalDB 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960535/

    相关文章:

    c# - 如何在 Visual Studio 中创建测试数据库?

    .net - SQL Server CE 和 Visual Studio 2013

    c - sqlite Visual Studio 2015

    c# - LocalDB 数据库首先用于 Entity Framework 代码

    c# - 将 KeyValuePair<int,string> 转换为 int[] 数组和 string[] 数组

    c# - 在 LINQ 查询中进行转换

    .net - 如何在工作组安装上以编程方式清除 MSMQ 系统队列日志?

    .net - 系统.Data.SqlClient.SqlException : Failed to generate a user instance of SQL Server

    eclipse - Eclipse在Visual Studio中使用“复制合格名称”功能吗?

    sql-server - Visual Studio 2015 中的 Localdb 错误 52 (SQL Server)