C# ASP.NET MVC 4中的Visual Studio 2013中MVC 4中的MS SQL Compact Edition应使用哪些providerName和ConnectionString?
Visual Studio 2013中MVC 4中MS SQL Compact Edition的C# ASP.NET MVC 4中的Visual Studio 2013中MVC 4中的MS SQL Compact Edition应使用哪些providerName和ConnectionString?,c#,sql,asp.net-mvc,asp.net-mvc-4,visual-studio-2013,C#,Sql,Asp.net Mvc,Asp.net Mvc 4,Visual Studio 2013,Visual Studio 2013中MVC 4中MS SQL Compact Edition的Web.config文件中应该使用什么providerName 导言 当我使用: <connectionStrings> <add name="MusicStoreEntities" connectionString="Data Source=|DataDirectory|MvcMusicStore.sdf" providerName="System.D
Web.config
文件中应该使用什么providerName
导言
当我使用:
<connectionStrings>
<add name="MusicStoreEntities"
connectionString="Data Source=|DataDirectory|MvcMusicStore.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
我得到:
那我为什么要改变什么呢?
实际问题:
如果我想通过此菜单添加新控制器时离开了providerName=“System.Data.SqlServerCe.4.0”
:
我得到:
但是如果我设置了providerName=“System.Data.SqlClient
,则会生成StoreManagerController
,但数据库根本不工作
问题:如何生成StoreManagerController
?我遵循本教程:并在该步骤之前链接到工作项目:请记住“Mvc音乐商店”“从MVC开始就是MVC101。考虑到已经发生了很多变化,文档/走查有点偏离的可能性是不利的。话虽如此:
由于您的连接字符串,数据驱动控制器的T4模板显然失败。这很可能是因为SQLExpress(本身)已经经历了很多周期,现在正在跟进。考虑到您使用的是MVC4,现在可能是升级的好时机,这意味着您可以享受SQL Express的所有好处(包括System.Data.SqlClient
提供程序),而不必担心以前的版本可能带来的麻烦
话虽如此,请更改连接字符串以使用新格式:
<connectionStrings>
<add name="MusicStoreEntities"
connectionString="Data Source=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=|DataDirectory|MvcMusicStore.mdf"
providerName="System.Data.SqlClient" />
</connectionStrings>
并且(可能)重新运行DatabaseInitializer(如果我没记错的话,这应该会自动发生,因为它使用的是EF。如果没有,您可以转到包管理器控制台并运行更新数据库
)
现在,这将为您提供控制器模板所需的提供程序,同时仍将其保留为本地(dev)数据库
我对MVC5也有同样的问题,因此我将web.comfig连接字符串更改为:
<add name="MusicStoreEntities" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|MvcMusicStore.mdf Catalog=MvcMusicStore" providerName="System.Data.SqlClient"/>
这对我有用 您有正确的提供者;看起来控制器的T4内出现了故障。我的猜测是实现一个空控制器并添加上下文,或者在本地SQL Express上旋转它并使用
System.Data.SqlClient
。我是ASP.NET noob。我从基础上学习。我该怎么办?也许重新安装一些东西?这是我在OP底部提供链接的教程对我不起作用的第一个地方。另外,您可以尝试将连接字符串更改为如下内容:Data Source=(localdb)\v11.0;综合安全=真实;AttachDbFileName=|数据目录| MvcMusicStore.mdf
。如果您使用的是MVC4,您可能希望迁移到使用。@BradChristie本教程基于Compact Edition,我现在所做的一切都是在providerName设置为Compact Edition时完成的。代码的语法或其他内容与以下内容错误:datasource=(localdb)\v11.0;综合安全=真实;AttachDbFileName=| DataDirectory | MvcMusicStore.mdf
应该是
(可能需要重新执行数据库初始值设定项)跟进:连接字符串基于您尝试完成的内容。显然,使用MySQL/InnoDB/等。您必须使用它们的提供者。然而,在更新的版本中,随着数据源=
的变化,您将看到System.Data.SqlClient
。它可能是SQLSERVER
(SQL计算机名称)、SQLSERVER\SQLEXPRESS
(SQLSERVER外的SQL Express实例)、(LocalDb)\v11
(更新的SQL Express的本地版本)、\SQLEXPRESS
,等等。对于非开发版本,您将提供初始目录=
(数据库名称)。对于开发版本,通常提供AttachDbFileName=
(因为它是基于文件的数据库,而不是服务器上的数据库)。您还可以使用|DataDirectory |
引用您所在项目的本地App_Data
目录(用于web项目)。顺便说一句,它是Sql CE(我认为不推荐使用)和Sql Server Express的混合体。也就是说,LocalDB可以与.Net应用程序一起部署(而不是作为副产品),不需要安装SQL Server(Express)即可工作,但在基本功能(数据类型、SQL语法等)方面与SQL Server完全相同,这与SQL CE不同。@ErikPhilips:感谢您的澄清。我对它的描述可能模糊不清,但你完全正确。它确实提供了更无缝的集成。
<add name="MusicStoreEntities" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|MvcMusicStore.mdf Catalog=MvcMusicStore" providerName="System.Data.SqlClient"/>