Id プロパティと Name プロパティを含む BaseEntity タイプを最初にコードでフレームワークをセットアップしました (すべての db テーブルには、少なくともこれら 2 つのフィールドがあります)。問題は、EF を実装する前にデータベースが作成されたため、データベース内の多くの列名がこの適切な Id/Name 規則と一致しないことです (たとえば、CustomerId や CustomerName などがある可能性があります)。基本的な CRUD 操作が行われる限り、マッピングでこれを行うだけなので、これは正常に機能します。
this.HasKey(t => t.Id).Property(t => t.Id).HasColumnName("CustomerId");
そして、それはあるものから別のものへと正しくマッピングされ、すべてが良好です
ただし、ストアド プロシージャにのみカプセル化できる複雑なデータベース ロジックもいくつかあるため、ObjectContext には、IList を返す sproc を呼び出すための汎用メソッドがあり、呼び出す proc の名前と必要なパラメーターを渡すことができます。 、次に ObjectContext の基になる Database オブジェクトに移動して呼び出しを行います。これは、poco のプロパティ名が db のプロパティ名と一致するクラスではうまく機能しますが、一致しない場合、そのオブジェクトに設定したマッピング (上記を参照) は無視され、次のようなエラーが発生します。
The data reader is incompatible with the specified 'SomeNamespace.Customer'.
A member of the type, 'Id', does not have a corresponding column in the data
reader with the same name.
これを回避する、または基礎となるデータリーダーに正しくマップするように適切に指示するクリーンな方法はありますか?
ありがとう