既存のデータベースで Entity Framework CodeFirst を使用しています。Customer_Info
2 列のテーブルからデータを返す既存のストアド プロシージャがありますCustomer_ID, Customer_Name
。Customer
2 つの Properties で呼び出されるこのエンティティのクラスを作成しましたCustomerID, CustomerName
。今、このストアド プロシージャを介してデータを取得しようとしています。メソッドでこのようにマッピングを定義しましたOnModelCreating
。
modelBuilder.Entity<Customer>().ToTable("Customer_Info");
modelBuilder.Entity<Customer>().
Property(x => x.CustomerID).HasColumnName("Customer_ID");
これは、ストアド プロシージャからデータを取得し、データをエンティティにロードしようとしている方法です。
public IList<Customer> GetCustomers()
{
return context.Database.SqlQuery<Customer>("exec GetCustomers @p0","NY")
.ToList();
}
しかし、うまくいきませんでした!このようなエラーが表示されます
データ リーダーは、指定された「顧客」と互換性がありません。タイプ 'CustomerID' のメンバーには、データ リーダーに同じ名前の対応する列がありません。
これを修正するにはどうすればよいですか? テーブルから直接読み取ると、プロパティ マッピングが機能します。