【问题标题】:C# Lightweight Data Access From Windows Forms App来自 Windows 窗体应用程序的 C# 轻量级数据访问
【发布时间】:2011-03-15 21:36:15
【问题描述】:

我有一个简单的 C# 应用程序,它需要访问一个保存两个变量的管理表。

谁能告诉我与数据库交互以检索和更新表的最快(就开发时间而言)方法是什么。我不想为了访问单个表而创建整个数据层?

【问题讨论】:

  • 不敢相信人们会推荐 ORM 作为启动和运行具有 1 个表和 2 个列的数据库的最快方法。
  • @fearofawhackplanet 请给出你的论点而不是情绪。

标签: c# database data-access-layer


【解决方案1】:

Linq To SQL 是最好的选择。你从数据库中拖放你的表,生成类然后你可以访问你的表,就好像它只是你程序中的一个变量一样。我喜欢这个教程:http://www.thereforesystems.com/linq-to-sql-tutorial/,但还有很多其他的,只是 google。

【讨论】:

  • 如果您使用的是 SQL Server,这是一个不错的选择。 LINQ to SQL 与任何其他数据库都不兼容。
【解决方案2】:

您应该使用现有的 ORM(-like) 框架之一,例如:

  • LINQ-to-Entities(首选,您在 VS.NET 中开箱即用地支持它)
  • LINQ-to-SQL(不是首选,MS 的支持正在减弱,仅支持 SQL Server)
  • NHibernate(您需要第三方工具来支持 VS.NET 中的设计)

其中大部分(如果不是全部)将允许您指定数据源并简单地将表拖到设计界面,此时将为您创建数据传输对象,以及查询和持久化它们的机制到数据存储。

【讨论】:

  • “最快(就开发时间而言)”绝对是 L2S
【解决方案3】:

【讨论】:

  • @Andrey,谁告诉你 ADO.NET 已经过时了?你读过这个(ayende.com/Blog/archive/2008/10/31/…)吗?我猜你没有。或者,也许您指的是不同的 Linq to Entities。
  • @Darin Dimitrov 我读了那篇文章。 ADO.Net 并没有过时,但是现在你有更强大的工具,没有理由直接使用它。
  • @Andrey:L2S 建立在 ADO.NET 之上。 ORM 解决方案在没有关系的数据库中以何种可能的方式使用?这家伙只有一张桌子!
  • 和 p.s. Andrey,有些人认为 L2S 现在已经过时了,因为 MS 决定将 EF 作为他们的主要 ORM 工具。
  • @Andrey:如果后天他有 4 个表,他可能会考虑将他花了 2 分钟编写的 Ado.Net 代码分箱,并用专用数据层替换它。不过,就他目前的要求而言,L2S 将是一个荒谬的选择。
【解决方案4】:

普通的旧 ADO.NET 应该没问题:

using (var conn = new SqlConnection("SOME CONNECTION STRING"))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "UPDATE mytable SET foo = 'bar'";
    cmd.ExecuteNonQuery();
}

【讨论】:

  • 当您需要从表中选择数据到您的集合时,您必须映射您的数据。痛苦将从这里开始。 MS 建议使用 Linq to SQL 和 Linq to Entities 来解决这个问题。为什么不使用它?
  • 我完全同意 ADO.NET。尽可能直接和简单地解决手头的问题。如果应用程序增长并且一个表中的这两列成为一个完整的模式,那么就转移到 ORM 上。与此同时,这很简单。
【解决方案5】:

您使用什么版本的 .NET?如果是 3.5 或更高版本,请使用标记有来自 http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.aspx 命名空间的属性的 LINQ2SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多