这可能是一个非常模糊的问题,但我想我真的不明白发生了什么.我问了一个 question earlier,我被告知一种“将数据绑定到对象”的简单方法就是运行一个SqlConnection(connectionString).该回复还包
使用其中任何一个有什么区别(或优点/缺点)?还有一个“标准”吗?一个更现代吗?
附:我问了很多不需要回答的问题.我只想为我的问题添加一些清晰度,以及我对这个主题的理解程度.
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查询的能力,更高的开发效率缺点:另一层意味着更多的翻译,对性能的打击,不适合某些事情(如批量操作)