gpt4 book ai didi

c# - 如何将 sql server express 存储在与 UI 不同的项目中?

转载 作者:太空宇宙 更新时间:2023-11-03 22:11:19 24 4
gpt4 key购买 nike

我的解决方案中有两个项目:

  • MyProject.UI (ASP.NET MVC 3)

  • MyProject.Domain(类库)

我在我的类库项目中添加了一个 sql server express 数据库以及一个 Entity Framework edmx 文件。 Entity Framework 中的模型设计者可以毫无问题地找到并连接到该项目中的数据库。当我这样做时,它会生成一个带有以下连接字符串的 app.config 文件:

<add name="TestDBstuffEntities" connectionString="metadata=res://*/Test.csdl|res://*/Test.ssdl|res://*/Test.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestDBstuff.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

您会注意到连接字符串包含 AttachDbFilename=|DataDirectory|\TestDBstuff.mdf;。当我将此连接字符串复制到 UI web.config 以便它可以在运行时使用时,出现错误。我假设这是因为它现在指的是 UI 项目的数据目录 (App_Data)。如果我将 AttachDbFilename=|DataDirectory|\TestDBstuff.mdf; 更改为存储 .mdf 文件的完全限定路径,它将起作用。

我的问题是,在 UI 项目之外的另一个项目中存储 sql server express 文件的最佳做法是什么?

最佳答案

我知道解决方案应该是什么,因为我在第一次创建 MVC 解决方案时不得不查找它并且遇到了同样的问题。我从来没有时间让它完全工作,所以这里可能有问题。

基本上,您应该设置DataDirectory 的值。在Global.asax.cs文件的Application_Start方法中,添加

AppDomain.CurrentDomain.SetData("DataDirectory", "c:\Path\To\Your\Database\Directory");

进行明显的替换。

现在,还有其他潜在的问题 -- .mdf 需要部署在某个地方,并且 SQL Server Express 需要具有在其部署位置读取和写入文件的权限。我不记得 SQL Server Express 的用户名,但我确实记得它很长;仔细检查您知道 SQL Server Express 可以访问的目录的权限以查找用户名。此外,您可能不希望每次构建解决方案时都覆盖数据库文件。 This MSDN blog post 是为 Visual Studio 2005 编写的,但我认为即使在 2010 年它仍然适用。

如果我遗漏了什么,我很抱歉。正如我所说,我还没有时间让我自己的解决方案完全发挥作用,但我认为这就是我的想法。

关于c# - 如何将 sql server express 存储在与 UI 不同的项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com