ユーザーテーブルがあります。
_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でユーザー名をプライマリキーとして定義しようとしましたが、次のエラーが発生しました。
プリンシパルロールユーザーが参照するプロパティは、Relationship CamelotShiftManagementModel.AssociationUserFK1のリレーションシップ制約でプリンシパルロールが参照するEntityType CamelotShiftManagementModel.Userのキーと正確に一致する必要があります。すべてのキープロパティがプリンシパルロールで指定されていることを確認します。 C:\ Code\CamelotShiftManagement\CamelotShiftManagement\Models\CamelotDB.edmx 278 11 CamelotShiftManagement
で試して、
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
は、「SELECT ...」のような通常のTSQLを生成します。First
またはFirstOrDefault
メソッドは、「SELECT TOP 1 ...」のようなTSQLステートメントを生成します私はそれを見つけました:
User myUser = myDBContext.Users.Single(user => user.Username == i_Username);