Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NETC#设置单独的Mvc和WebApi项目以使用相同的数据库_C#_Asp.net_Asp.net Mvc_Entity Framework - Fatal编程技术网

ASP.NETC#设置单独的Mvc和WebApi项目以使用相同的数据库

ASP.NETC#设置单独的Mvc和WebApi项目以使用相同的数据库,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,嘿,我被困在以下问题上: 我有一个包含以下项目的解决方案: ~.Api ~Mvc ~.数据 其中~.Api项目包含与数据库通信的Api控制器,~.Data项目包含所有模型和存储库以及从DbContext派生的类,最后是~.MVC项目,其中包含MVC 现在的问题是,它们需要使用相同的数据库,但是,当我在各自的Web.config文件中为两个项目提供相同的和标记时,尝试调用数据库的第一个项目工作正常,但另一个项目出现错误(如下所示) 我还尝试从这两个文件中删除标记,并将从DbContext a:

嘿,我被困在以下问题上:

我有一个包含以下项目的解决方案:

  • ~.Api
  • ~Mvc
  • ~.数据 其中~.Api项目包含与数据库通信的Api控制器,~.Data项目包含所有模型和存储库以及从DbContext派生的类,最后是~.MVC项目,其中包含MVC
现在的问题是,它们需要使用相同的数据库,但是,当我在各自的Web.config文件中为两个项目提供相同的和标记时,尝试调用数据库的第一个项目工作正常,但另一个项目出现错误(如下所示)

我还尝试从这两个文件中删除标记,并将从DbContext a:base派生的类(“connectionstring”)与其构造函数一起赋予。这导致错误“~.Mvc\App\u Data\connectionstring.mdf”作为数据库“connectionstring”

我认为这可能是一个问题,第二个项目希望创建自己的数据库版本,但它已经存在,但也可能是完全不同的


有人遇到过类似的问题吗?或者你知道我应该怎么做吗?非常感谢所有的帮助!

难道你不能创建一个从数据层返回数据库上下文实例的静态方法吗? 然后,您可以从api和mvc项目中引用您的数据层,只需调用静态方法


我认为您应该创建一个引用数据层的业务层,然后您可以从api和MVC项目中调用业务逻辑。

您不能创建一个从数据层返回数据库上下文实例的静态方法吗? 然后,您可以从api和mvc项目中引用您的数据层,只需调用静态方法


我认为您应该创建一个引用数据层的业务层,然后您可以从您的api和MVC项目中调用业务逻辑。

该错误消息毫无意义-这是完整的消息吗?我怀疑,因为您似乎正在使用.mdf数据库,而这些数据库只是磁盘上的文件,所以项目需要能够引用数据库的实际路径。如果指定“应用程序数据”作为每个项目中的路径,它指的是该项目中的一个文件夹。或者更好的是,IMHO,使用作为服务运行的适当数据库,通过端口而不是文件引用来访问它。SQL Server Community edition可以免费安装。然后,使用相同的连接字符串从任何项目连接到它都很容易。完全agr同意ADyson的观点。你需要一个SQL实例,而不是一个
mdf
文件。SQL的好处是,你可以从任意多个项目中使用它,而不是mdf。我可以使用MSSQLSLocalDB吗?你能告诉我怎么做吗?非常感谢!我删除了对mdf文件的引用,我通常不使用它,但我认为rt已生成,我不想检查它。非常感谢@ADyson和ViVi让我查看它!我刚刚从连接字符串“AttachDbFilename=| DataDirectory | \aspnet SchoolManagementSystem.Mvc-20170526013041.mdf”中删除了此部分该错误消息毫无意义-这是完整消息吗?我怀疑,因为您似乎正在使用.mdf数据库,而这些数据库只是磁盘上的文件,所以项目需要能够引用数据库的实际路径。如果您指定“app_data”作为每个项目中的路径,它指的是该项目中的一个文件夹。或者更好的是,IMHO,使用作为服务运行的适当数据库,通过端口而不是文件引用来访问它。SQL Server Community edition可以免费安装。然后,使用相同的连接字符串从任何项目连接到它都很容易。完全agr同意ADyson的观点。你需要一个SQL实例,而不是一个
mdf
文件。SQL的好处是,你可以从任意多个项目中使用它,而不是mdf。我可以使用MSSQLSLocalDB吗?你能告诉我怎么做吗?非常感谢!我删除了对mdf文件的引用,我通常不使用它,但我认为rt已生成,我不想检查它。非常感谢@ADyson和ViVi让我查看它!我刚刚从连接字符串“AttachDbFilename=| DataDirectory | \aspnet SchoolManagementSystem.Mvc-20170526013041.mdf”中删除了此部分非常感谢您的输入,我确实将该方法设置为静态,我在连接字符串中创建了一个oopsie。我找到它要感谢@ViVi和ADyson。非常感谢您的输入,我将该方法设置为静态,我在连接字符串中创建了一个oopsie。我找到它要感谢@ViVi和ADyson