从sql对象查询中选择linq类

时间:2013-05-28 21:27:11

标签: c# .net sql-server linq

学习LINQ,试图掌握范式......

我为其中一个核心业务对象设置了一个LINQ表类。我想使用MS SQL服务器表对象从数据库中检索这些对象的列表(即不是为所有涉及的数据库表/视图定义单独的LINQ类)。我可以使用LINQ条件/连接语法,但是懒惰/保守使用ORM代码块。也许我要求一些非正统的东西,并且在LINQ范例中我期望在LINQ类中构建100%的数据库结构副本,然后仅使用这些类来进行查询。

1 个答案:

答案 0 :(得分:1)

您所描述的内容特别是LINQ to SQL / Entity Framework提供程序,此行为实际上并不是LINQ的产品。您根本不需要任何类来对数据库中的内容进行建模。比方说,我在LINQ to SQL查询中加入3个表,称之为a,b和c。您可以在语句的最后添加一个选择并执行类似的操作;

RestOfLinqQuery.Select( new { name = a.name, address = b.address, height = c.height } );

这将返回一个由三个表中的属性组成的匿名对象。此外,您可以创建一个具有表a,b和c中各种属性的对象,并使用相同的初始化样式或创建一个构造函数,该构造函数接收您要设置的所有字段并创建它。 Table to Object映射由Entity Framework创建,LINQ完全不受此限制。

编辑:这个答案有一个很好的完整查询示例,比我的小例子更好; How do I convert multiple inner joins in SQL to LINQ? 正如您所看到的那样,使用相同类型的初始化来从多个表中设置新创建的对象的属性。

此外,如果您正在处理企业应用程序并遇到此问题,一个好的解决方案是在db中创建视图,为您执行所有连接,然后在C#中对视图进行建模,而不是对哪些行进行建模。实际上代表了有用的物品。