EF Core を使用して C# で MySQL にクエリを実行すると、主キーの列名が正しくありません
P粉736935587
2023-08-17 13:45:14
<p>C# で MySQL データベースにクエリを実行する方法を学んでいますが、列リストに無効な列があるというエラーが表示されますが、その列名 (ToDoId) がどこにあるのかわかりませんから。 </p>
<p>テーブル (以下に示すモデル) には列が 2 つだけあり、mysql の主キーは <code>Id</code> です。その <code>ToDoId</code> はどこから来たのでしょうか?また、それを強制的に <code>Id</code> にするにはどうすればよいですか? </p>
<p>すべてのサンプル コード (ここから) を確認し、新しいテーブルを正しく追加するためにすべてを更新したと思います。 </p>
<p>これは私のモデルです:</p>
<pre class="brush:php;toolbar:false;">パブリック クラス ToDo
{
パブリック Guid ID { 取得; 設定; }
public string ToDoName { get; set; } = null!;
public ICollection<ToDo> ToDos { get; set; }
publicToDo()
{
ToDo = 新しい HashSet<ToDo>();
}
}</pre>
<p>クエリ内で、ここでエラーが発生します: </p>
<pre class="brush:php;toolbar:false;">パブリック クラス ToDoRepository : IToDoRepository
{
プライベート読み取り専用 DatabaseContext _context;
public ToDoRepository(DatabaseContext コンテキスト)
{
_context = コンテキスト;
}
// 次の _context.ToDo は次のように定義されます: public virtual DbSet<ToDo> ToDo { get; set; } = null!;
public IQueryable<ToDo> Query => _context.ToDo.AsQueryable();
// ここでエラーが発生しました...
public IReadOnlyList<ToDo> リスト => クエリ
.ToList();
}</pre>
<p>エラーメッセージ: </p>
<ブロック引用>
<p>MySqlConnector.MySqlException: 'フィールド リスト' の不明な列 't.ToDoId'</p>
</blockquote><p><br /></p>
シンプルにして、EF conventions を使用し、主キーの名前を
に変更します。classNameID、つまりあなたの場合:
リーリーまたは、ここで説明されているように Key 属性を使用します:
リーリークラスに名前を付けるためのフレンドリーな提案 Todo