我是Linq世界的新手并且正在探索它。我正在考虑在我的下一个涉及数据库交互的项目中使用它。
从我读过的内容来看,我认为有两种不同的方式与数据库进行交互:
现在我要处理的产品,不能依赖于数据库的类型。例如,它可能与SQL server / Oracle一起部署。
现在我的问题是:
答案 0 :(得分:11)
你是正确的#1 - Linq to Sql只能用于SQL Server数据库。
如果您希望能够访问不同的数据源(使用不同的提供程序),我将使用ADO实体框架。在使用类似POCO的实体方面,您可以获得类似的灵活性,并且可以非常轻松地扩展以实现更高级/复杂的实现。
在我目前的项目中,我们正在使用Linq到Sql并且一切都很好,但我们有很多问题需要克服。在可扩展性方面,我发现它有时过于简单了。我写了一篇(更好的)关于Linq to Sql和实体框架here的回复。
关于问题#2 - 我不确定我是否想回到DataSet。恕我直言他们更像是过去,但如果你有一个具有特定控件(如Infragistics)的体面工具包,它会很有用。但是,我发现它们的开销对于快速事务系统来说太昂贵了。该实现没有Linq to Sql或Entity Framework的一半功能。
答案 1 :(得分:4)
回答你的第一个问题:不,oracle还有其他linq提供程序的实现,例如:
后者支持更多数据库,如SqLite。
答案 2 :(得分:3)
您应该了解Linq to Entities。这是最全面的框架。现在,它主要用于SQL Server,但您将及时支持Oracle等。
答案 3 :(得分:2)
您不会只使用SQL服务器。理论上,您可以为任何数据库构建linq提供程序。 Linq to Oracle http://www.codeplex.com/LinqToOracle上有一个关于codeplex的项目。我自己没试过。
您如何将数据导入数据集?我不认为您要将整个表格提取到数据集中?那将是一个严重的性能问题。如果要将Linq用于数据集,则需要自己编写所有SQL查询以从数据库中获取数据,而不是让linq创建sql查询。因此,您实际上首先必须查询数据库,然后查询数据集。对我来说似乎是双重工作......
答案 4 :(得分:1)
当你使用Linq to SQL时,据我所知,你几乎会陷入SQL Server。
如果你使用Linq to DataSet,你将失去一些编程的简易性:使用Linq,你可以直接使用Linq实体,而使用DataSet,你必须继续使用DataSet名称(MyDataSet.Entity = new MyDataSet .Entity()),一段时间后变老了。我认为这是唯一的牺牲。
但是,你可以使用它,例如Oracle(在项目上做到了这一点)。对DataAdapter进行更多控制也是非常拖沓的(据我所知 - 我从来没有那么多调整Linq-to-SQL),你可以指定(例如)使用哪些查询等等。
由于您仍然可以在DataSet中定义表之间的关系,因此您仍然可以使用Linq,因此您不会真正看到问题。
我认为Linq-to-DataSet的可靠性与Linq-to-SQL一样好(从未遇到过问题),性能似乎已经足够好了,但从来没有真正描述过它。
答案 5 :(得分:1)
您不会只停留在SQL Server上。 我们为Oracle,MySQL,PostgreSQL和SQLite服务器提供LINQ to SQL实现。 获取更多信息here 与LINQ to SQL技术相比,DataSet不太方便。 查看Entity Framework选项作为替代方案。 您可以使用一个概念模型编写多个存储模型,然后并行使用SQL Server和Oracle数据库。