4

我有这样的 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 文件夹中。我一直在根据需要手动复制它,但很明显,随着应用程序更改数据,它们会不同步。

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

4

3 回答 3

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

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

于 2013-04-18T21:37:29.163 回答
0

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

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

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

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

于 2013-04-11T23:38:14.317 回答
0

我可能错了,一个 localDB 一次只能访问一个应用程序。如果您希望多个应用程序可以同时访问一个数据库,请将 LocalDB 连接到 Express Edition SQL 服务器。为每个应用程序使用表单身份验证以快速方式创建用户。将 ConnectionString 更改为使用用户名和密码表达 sql。你已准备好出发。

于 2013-04-25T23:33:34.563 回答