vb.net - 使用 DataContext 类和 SqlConnection 之间有什么区别?

标签 vb.net linq-to-sql ado.net database-connection

这可能是一个非常模糊的问题,但我想我不太明白发生了什么。我问了question earlier有人告诉我“将数据绑定(bind)到对象”的简单方法是运行 SqlConnection(connectionString)。回复中还包含一条评论,称我可能会喜欢 L2S 和 Entity Framework ,因此我更深入地研究了这些。看起来您所要做的就是将 DataContext 对象指向数据库。为什么 SqlConnection 会带来好处?

使用其中任何一种有什么区别(或优点/缺点)?又是一个“标准”吗?更现代吗?

P.S.我问了很多问题,但并不是所有问题都需要回答。我只是想澄清一下我的问题以及我对这个主题的理解程度。

最佳答案

SqlConnection 是基础、原始 ADO.NET 类库的一部分 - 实际上是该库的 SQL Server 部分。这是.NET 中所有数据访问的基础。

使用原始的 ADO.NET,您非常“简单”并且接近金属 - 您必须创建 SQL 查询并执行它们,您将获得行和列,非常类似于关系数据库所提供的你。

优点:非常接近 SQL,非常强大,性能最佳
缺点:更难编写、更多“粘合”代码、类型安全性较低、与底层数据库结构的耦合更紧密

<小时/>

DataContext (Linq-to-SQL) 或 ObjectContext (Entity Framework) 是更高级别的抽象 - 它们位于 ADO.NET 之上,但它们 (Linq- to-SQL 或 Entity Framework )提供所谓的 ORM 功能 - 在这里,您并不是真正处理原始 SQL 语句和行/列,相反,这些代码生成器将为您创建一个抽象层 - 这是由 .NET 构建的对象。数据库中的每个表都将转换为相应的 .NET 类,并具有该表中所有列的属性。

此外,对于 L2S 和 EF,您通常使用 LINQ 进行查询 - 您的查询更像是 C# 代码,L2s/EF 将处理将您在 C# 中表达的查询转换为实际的查询SQL Server 将执行的 SQL 语句。

优点:更容易使用,更好处理(具有属性的对象与原始行/列),类型安全,使用 LINQ 查询的能力,更高的开发效率
缺点:另一层意味着更多的翻译,对性能的影响,不太适合某些事情(例如批量操作)

关于vb.net - 使用 DataContext 类和 SqlConnection 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539741/

相关文章:

c# - LINQ:何时使用编译查询?

c# - 如何在现有( Entity Framework )数据库中使用 SqlProvider 表

c# - COM 可见 C# 类库中的 ADO.NET Entity Framework

c# - 在 silverlight3 中将当前屏幕转换为字节数组的方法

vb.net - 为用户错误抛出异常?或者更好地设计自定义错误消息框架?

c# - Linq 缓存数据值 - 主要并发问题?

c# - Nz 和 IIF 的替代方案(为空)

vb.net - Excel.Application.get_Item 不工作

mysql - 由于空错误 [HY000] [MySQL][ODBC 3.51,插入失败

c# - 我将如何设计一个存储库来处理多个数据访问策略?