質問: id); ``` 私はすでにチェックしており、フィールド`UserId`と変数`id`は両方とも整数です。また、テーブルには十分な要素が含まれており、 `id`が1の行が存在します。 誰でも私がここで間違っていることを教えてもらえますか? 編集:ここでは、 `User`モデルの一部です: ``` public class User { public int UserId { get; set; } (...) } ```
回答: *注:答えは実際に元の質問の下のコメントで提供されました。私はそれをもっと見やすく明瞭にするためにここに少し追加しています。* Entity Frameworkは明らかに、各テーブルのさまざまな列を表すプロパティを使用して、C#クラスをデータベーステーブルにマップします。これらのプロパティのいずれかのデータ型がデータベースの対応する列のデータ型と互換性がない場合、不一致のプロパティが直接関係していなくても、そのテーブルから何かをフェッチしようとすると`System.InvalidCastException`発生しますルックアップ。 質問では、クエリは: ``` User user = context.Users.First(i => i.UserId == id); ``` `id`とそれに対応するプロパティ`UserId`の両方が有効であり、ここで相互に互換性があることは重要ではありません。フェッチされているのはクラス`User`全体のインスタンスなので、ここでは関係ありません。 どうやら`User`他のプロパティの型は、データベースの`user`テーブルの同じ名前のカラムとは互換性がないので、それにマップしようとすると上記の例外がスローされます。