Zeusro搬运+Google翻译+校对:微软官方M#基础教程──(4.01 Database.Get()VS Database.Find())

Database.Get()VS Database.Find()

在这一课中,我们将讨论M#数据访问存储库中的两个方法。这些方法用于从数据库中获取单个表的记录。在本课程中,我们将使用我们的“雇员”的实体,它继承了“用户”实体,详细讨论这些方法。

Database.Get()

这种方法有四个重载,需要一个“实体类型”,从检索记录和“身份证”来识别记录。此方法返回单一实例所提供的实体类型和抛出“System.ArgumentNullException”,如果输入参数为null或空。

注:实体类型必须实现“IEntity”界面。(对于M#接口的更多信息,请阅读课IEntity接口,在第3章。)

下面是四个重载此方法的截图:

  

当一个记录从数据库所需的基础上,实体的“ID”必须只使用这种方法。此方法还提高了性能,因为M#运行在SQL环境中的查询。

Database.Find()

这种方法有2重载。您还需要指定实体类型,以利用此方法。此方法返回所提供的实体类型的第一个匹配的记录,如果找到,返回“空”如果没有记录可??在数据库的基础上,提供了标准。以下是两种重载此方法的截图:

超载1

此重载需要“标准”类型的集合中的一个参数。标准是用来提供参数和相应的值要被搜索对数据库M#的内部类。M#转换提供的标准参数为SQL查询。

例如:

我们可以调用此方法来获得员工的记录由“姓名”,如下图所示

上面显示的代码是否有名称为“John”的雇员将返回的Employee实体类型的一个实例,或者如果没有这样的员工存在于数据库中返回“空”。

重要提示:请注意,此方法将第一个记录发现的基础上提供的情况如上图所示的查询,如果有一个以上的“员工”与“约翰”的名字,那么第一条记录会寻找一个记录,例如标准可以通过该方法返回。

超载2

此重载需要两个参数,是非常有用的,当你不仅想要搜索的纪录,但也希望获取SQL Server中的记录之前进行排序或不等。第一个参数需要一个“Lambda表达式”的标准,第二个参数“查询选项(M#的内部类)”是用来传递额外的查询选项。如分拣,等不等

例子

我们可以按照同样的例子,因为我们使用的第一个重载,但是这次我们将使用一个Lambda表达式和查询选项,如下图所示:

上面显示的代码,如果有雇员有名称为“约翰”,但这个时候所有的员工记录将被它们的“电子邮件”以第一个匹配的记录之前下令将返回的Employee实体类型的一个实例。M#转换在SQL服务器上面显示如下所示的方法:

关键的区别

Database.Get()方法只作用于实体实例的“ID”的属性,并假定有一个记录与所提供的“ID”相关联的数据库。因此,这种方法应始终当你是肯定的通过“身份证”之称。

Database.Find()方法可以在很多场景中使用您要搜索的记录比所记录的“身份证”以外的标准和要执行额外的查询选项,例如排序。

 

Database.Get()方法的标准总是被转换成它运行在SQL服务器环境中的SQL查询。

Database.Find()方法的标准并不总是完全转化为SQL查询,因此并不总是在SQL服务器环境,例如运行完整的查询,如果您的查询条件是基于集合的记录的完整列表将采取内存和搜索将在内存中执行。

Zeusro搬运+Google翻译+校对:微软官方M#基础教程──(4.01 Database.Get()VS Database.Find()),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。