我有一个用户表:
Users:
+ID
+Username
+...
我想使用
myDBContext.Users.Find(Username)
查找用户。在当前上下文中,我无法使用他的ID。
我必须使用完整的LINQ查询吗?例如
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
我还尝试将用户名定义为edmx中的主键,但这导致以下错误:
最佳答案
试试看,
User myUser = myDBContext.Users.SingleOrDefault(user => user.Username == username);
使用由
SingleOrDefault
插入的Single
。如果用户不存在,则Single
将引发错误。如果找不到用户,则SingleOrDefault
将返回null
,否则将返回User
对象。在
SingleOrDefault
和FirstOrDefault
之间选择您可以通过使用
SingleOrDefault
和FirstOrDefault
获得用户对象,但是在选择使用哪种方法时,请考虑以下几点。SingleOrDefault
,因为如果有多个元素可用,它将引发异常。 FirstOrDefault
与SingleOrDefault
进行比较即可获得更好的性能FirstOrDefault
FirstOrDefault
或First
。 其他一些说明
username
是主键,那么我认为SingleOrDefault
和FirstOrDefault
性能之间没有(显着)差异,因为主键具有索引,并且在索引列上的搜索将始终快于普通列。 Single
或SingleOrDefault
将生成常规的TSQL,例如“SELECT ...”。 First
或FirstOrDefault
方法将生成TSQL语句,例如“SELECT TOP 1 ...” 关于asp.net-mvc - 使用不带主键的查找在dbSet中查找记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12545565/