Mor*_*lus 27 linq asp.net-mvc entity-framework
我有一个用户表:
Users:
+ID
+Username
+...
Run Code Online (Sandbox Code Playgroud)
我想用来myDBContext.Users.Find(Username)为用户提供帮助.在我目前的背景下,我不能使用他的身份证.
我必须使用完整的LINQ查询?例如
var user = from users in myDBContext.Users.Find(Username)
where users.Username == username
select users
Run Code Online (Sandbox Code Playgroud)
我还尝试将用户名定义为我的edmx中的主键但导致以下错误:
主体角色用户引用的属性必须与关系CamelotShiftManagementModel.AssociationUserFK1的关系约束中的主体角色引用的EntityType CamelotShiftManagementModel.User的密钥完全相同.确保在主体角色中指定了所有关键属性.C:\ Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 278 11 CamelotShiftManagement
Jig*_*ker 52
试试,
User myUser = myDBContext.Users.SingleOrDefault(user => user.Username == username);
Run Code Online (Sandbox Code Playgroud)
使用SingleOrDefaultinsted Single.如果用户不存在Single则会抛出错误.尽管SingleOrDefault将返回null如果没有找到用户,否则User对象将是回报.
选择SingleOrDefault和之间FirstOrDefault
您可以使用SingleOrDefault和获取用户对象,FirstOrDefault但在选择使用哪种方法时请考虑以下几点.
SingleOrDefault因为如果有多个可用元素,它将抛出异常.FirstOrDefault以获得更好的性能比较SingleOrDefaultFirstOrDefault
FirstOrDefault或First在我们从集合或数据库中需要单个值(第一个)时使用.其他一些言论
username是主键,那么我认为主键之间没有太大/没有区别SingleOrDefault,FirstOrDefault因为主键有索引,索引列上的搜索总是比普通列快.Single或SingleOrDefault将生成常规TSQL,如"SELECT ...".First或FirstOrDefault方法将产生TSQL statment像"SELECT TOP 1 ..."我找到了:
User myUser = myDBContext.Users.Single(user => user.Username == i_Username);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35208 次 |
| 最近记录: |