1

私はネットを精査してきましたが、有用なものは見つかりませんでした。Entity Framework 6.x のストアド プロシージャに接続したい POCO クラスがあります。挿入、更新、および削除のためにFluent APIでそれを行う方法を見てきました....しかし、ただの読み取りではありません。

私はこれを見つけました:EF 6 Code First Stored Procedure - Read Only、しかしそれはどこかのコントローラーの単なるメソッドのようです。

他のエンティティと同じようにコンテキストを呼び出す方法はありますか? IE、ctx.Products.Where( p => p.ProductId == productId )?

4

1 に答える 1

1

これは 2 つの方法のうちの 1 つです。

ドメイン / POCO マッピング

根本的な問題が Entity Framework モデルの POCO と (おそらく純粋に論理的な) ドメインとの不一致である場合、EF モデルをデータベース スキーマに直接一致させ、それに応じてそれらをドメイン タイプにマップします。つまり、EF poco とは別のドメイン モデルがあります。proc によって以前に行われたマッピング作業は、ドメイン マッパー内で行われます。

リポジトリの背後にある抽象的な DbContext の使用

コンシューマーにコンテキストを直接クエリさせるのではなく、エンティティ リポジトリの背後にあるコンテキストを抽象化し、proc を呼び出す SqlQuery とリポジトリ メソッド内の POCO との間をマッピングできます。

たとえば、大まかなコードは次のとおりです。

public class MyEntityRepository()
{
    public ICollection<MyEntity> GetAll()
    {
        return _myContext.SqlQuery<MyEntity>("exec myProc", params); 
    }
}

ただし、これらのオプションはどちらも、すぐに実装してコードベースに導入することはできません。

于 2014-07-22T12:03:18.017 に答える