在此 MSDN 链接上提到了以下有关该.Find()
方法的内容
如果在上下文中未找到实体,则将向数据库发送查询以在其中查找实体。如果在上下文或数据库中找不到实体,则返回 Null。查找与使用查询在两个重要方面不同:
• 只有在上下文中找不到具有给定键的实体时,才会对数据库进行往返。
• Find 将返回处于已添加状态的实体。也就是说,Find 将返回已添加到上下文但尚未保存到数据库的实体。
但这会导致问题吗?假设一个对象被标记为已添加状态,但在将其保存到数据库之前发生了异常。因此,查找可能会返回具有已添加状态的对象,该状态稍后尚未保存到数据库中。
第二个问题,如果 .Find 在上下文中找到一个对象,并且该对象在找到它之后在数据库中更新,那么上下文上的对象版本会是旧的怎么办?
那么,使用or.Find()
代替基于主键进行搜索,我可以获得什么好处?.Where
.firstordefault(a=>a.primarykey ==id)