49

我觉得奇怪的是,在 Visual C# 2008 Express 版本中,当您使用数据库资源管理器时,您的选项是:

  1. 微软访问
  2. SQL Server Compact 3.5 和
  3. SQL Server 数据库文件。

但是,如果您使用 Visual Web Developer 2008 Express,您可以连接到常规的 SQL Server、Oracle、ODBC 等。

对于开发需要与 SQL Server 数据库通信的命令行或其他 C# 应用程序的人来说,您真的需要使用一个 IDE(Visual Web Developer)和另一个(Visual C#)中的程序来构建您的 LINQ/数据访问代码吗?

这不是一个困难的解决方法,但它看起来很奇怪。如果 Microsoft 想要强制您升级到 Visual Studio 以连接到 SQL Server,为什么他们会在他们的一个免费 IDE 中包含该功能,而不是另一个?我觉得我可能会遗漏一些东西(比如如何在 Visual C# 中完成这一切)。

4

6 回答 6

21

您应该能够选择 SQL Server 数据库文件选项来获取正确类型的数据库(system.data.SqlClient提供程序),然后手动更正连接字符串以指向您的数据库。

我认为这些数据库选择背后的原因可能是这样的:

  • 如果您使用的是 Express Edition,而您没有使用 Visual Web Developer,那么您可能正在构建一个桌面程序。
  • 如果您正在构建一个桌面程序,并且您使用的是 express 版本,那么您可能是在家工作而不是为公司进行开发的业余爱好者或 uISV-er。
  • 如果您不是为公司开发,您的应用程序可能是为最终用户而设计的,并且您的数据存储可能在他们的本地计算机上。
  • 您真的不应该将服务器级数据库部署到最终用户桌面。像 Sql Server Compact 或 MS Access 这样的进程内数据库更合适。

然而,这个逻辑并不完全成立。即使这 4 点中的每一个在 90% 的情况下都是正确的,但当你应用所有这四个点时,它也只适用于大约 65% 的受众,这意味着多达 35% 的快递市场可能会合法地想说话到服务器级数据库,这是一个重要的群体。因此,简化(贪婪)版本:

  • 一个真正的数据库服务器(以及运行它的硬件)需要真金白银。如果您可以使用它,您应该至少能够负担得起 Visual Studio 的标准版。
于 2008-10-09T20:24:38.650 回答
21

解决方法:

  1. 在 Visual Web Developer Express 中打开您的解决方案。它不会加载解决方案中的某些项目,但没关系。
  2. 在数据库资源管理器中与 SQL Server 所需的数据库建立新连接。
  3. 添加一个新的类库项目。
  4. 添加一个 LINQ to SQL Classes 项并将其链接到您的数据库。
  5. 关闭解决方案。
  6. 在 Visual C# Express 中打开解决方案。

现在您有一个 LINQ to SQL 类库,它链接到 Visual C# Express 中的 SQL Server 数据库。

更新

该解决方案适用于 Visual Studio Express 2010。

于 2011-01-16T23:22:07.087 回答
2

我的猜测是,使用 VWD,您的解决方案更有可能部署到第三方服务器,其中许多服务器不允许动态附加 SQL Server 数据库文件。因此允许其他连接类型。

IDE 行为的这种差异是升级到完整版本的关键原因之一。

于 2008-10-09T20:05:09.297 回答
2

如果您使用它来获取我为 Visual Developer 做的并想要的 LINQ to SQL,1) 获取免费的 Visual WEB Developer,使用它连接到 SQL Server 实例,创建您的 LINQ 接口,然后将生成的文件复制到你的 Vis-Dev 项目(我不使用 VD,因为它听起来很有趣)。仅包括 *.dbml 文件。Vis-Dev 环境将需要一两秒钟来识别支持文件。这是一个额外的步骤,但肯定比手工完成或完全放弃或更糟糕的是,为它付费。呜呜哈哈哈。

于 2009-10-11T23:17:53.177 回答
2

我能够让 C# Express 2008 工作的唯一方法是移动数据库文件。因此,我打开了 SQL Server Management Studio,并在删除数据库后,将文件复制到我的项目文件夹中。然后我将数据库重新附加到管理工作室。现在,当我尝试附加到本地副本时,它可以工作。显然,您不能多次使用同一个数据库文件。

于 2010-03-17T20:49:44.660 回答
2

为了方便起见,我只是碰巧在 Windows 窗体中启动了我的家庭业务应用程序。我目前正在使用 Visual C# Express 2010 / SQL Server 2008 R2 Express 来开发它。我遇到了与需要连接到 SQL 服务器实例的 OP 相同的问题。我在这里跳过细节,但该数据库将是在 2-3 台计算机之间同步的合并数据库,这些计算机也将使用我现在正在开发的应用程序。

我找到了一个快速的解决方法,至少,我认为我做到了,因为我现在能够在 tableadapter 中使用我的存储过程,到目前为止没有任何问题。

我在 app.config 中复制粘贴了我在另一个工作项目(VS2010 Premium)中使用的 SQL 连接,并在那里更改了我需要的所有内容。当我回到我的 Settings.settings 时,我只需要确认我想要 app.config 文件中的内容。我能看到的唯一缺点是你不能“测试”连接,因为当你进入连接字符串的配置时,你不能去任何地方,因为“SQL Server”不是一个选项。另一个缺点是您需要手动输入所有内容,因为您无法使用任何向导来使其工作。

我不知道我是否应该这样做,但至少我现在可以连接到我的 SQL 服务器 :)。

编辑 :

它仅适用于 SQL Server 2008 R2 Express 实例。如果您尝试使用 SQL Server 2008 R2 Workgroup 及更高版本,您将收到来自 Visual C# 2010 Express 的令人讨厌的警告,告诉您“您不能在当前版本的 Visual Studio 中使用该连接”。当我试图修改我的一些表格适配器时,我得到了这个。我切换回 SQL Express 实例进行开发,它再次正常工作。

于 2011-08-15T15:14:07.683 回答