我的数据库的每个表都需要一个类吗?

时间:2010-02-04 13:36:35

标签: c# linq

我试图掌握LINQ,因为我理解它LINQ将是你的db的DAL,它反过来为你创建一个为你映射你的db结构的类,然后你可以使用该类执行查询..

  • 我试图做一个会返回我的LINQ查询结果的函数。
    • 我一直在阅读的所有示例似乎都指出,如果我希望我的查询是一个已定义的类型,我必须为它创建一个特定的类并将其用作List ..
我的假设是正确的吗?请赐教我

3 个答案:

答案 0 :(得分:6)

“Linq”不是ORM技术,它只是一种在.Net语言中编写类似语句的查询的方法。您还没有说过是使用Ling to SQL还是Linq to Entities,它们都是与Linq一起使用的ORM技术,可以将您的数据模式映射到表。

Linq to SQL将为您提供每个表到类的直接映射,并将处理大部分提升以完成此操作。您的查询可以返回这些类型,或者使用您的Linq表达式,您可以将这些类型“投影”到您自己创建的其他类型。

如果您需要更多灵活性,Entity Framework将允许您将单个表映射到多个实体,将多个表映射到单个实体等。为此,您必须自己完成更多工作,因为您有在许多情况下手动修改映射。与Linq to SQL类似,查询可以返回这些生成的类型,也可以在查询中指定自己的类型。

答案 1 :(得分:2)

默认情况下,Linq to SQL设计器将为数据库中的每个表创建一个类。创建的数据库上下文对象将为数据库中的每个表定义一个定义。您可以对这些表定义执行Linq查询并将结果存储在生成的类中,您的查询将生成匿名类型。这取决于你。

答案 2 :(得分:1)

根据你问题的标题,我会说不。可能存在您不需要映射到Linq2SQL的表的实例。想到的一个直接例子是,如果您使用的是ASP.NET Membership API,则不需要将这些表/ sprocs /函数拖到设计器中,因为API会公开这些数据。

如果您正在使用设计器(DBML文件),则可以选择要将哪些数据库对象引入解决方案。这是我完成它的方式,只引入我实际需要访问的那些db对象。作为另一个例子,我曾经在一家商店工作过一次强烈要求通过存储过程完成所有数据库访问。所以在这种情况下,我使用了很多[StoredProcedureName]结果,而这些结果又映射到其他对象,而不是实际的表本身,甚至在解决方案中都没有定义。