0

私は現在、EF5を使用してasp.net mvc 4で作業しており、依存性注入をNinjectで動作させようとしています。

ソリューションで 4 つの異なるプロジェクトを作成しました。

  • Gui -> 私の MVC プロジェクトが含まれています
  • ビジネスロジック -> ビジネスロジック
  • DataAccess -> 私の edmx ファイルとリポジトリ (共通参照)
  • 共通 -> モデル、ViewModel、および IRepository。

今、私はこれを書こうとしています:

Iリポジトリ:

    IQueryable<PictureSource> PictureSource { get; }

リポジトリ:

    IQueryable<PictureSource> IRepository.PictureSource
        {
            get { return context.PictureSource }
        }

問題は、IRepository で PictureSource を呼び出すことができないことです。これは、DataAccess にある EF のエンティティであるためです。リポジトリで次の方法でオートマッパーを使用してみました。

     public IQueryable<PictureSourceModel> PictureSource()
        {
            Mapper.CreateMap<List<PictureSource>, List<PictureSourceModel>>();
     return Mapper.Map<List<PictureSource>,List<PictureSourceModel>>
     (context.PictureSource.ToList());
        }

これにより、dbSet 以外でエラーが発生します。ヒントはありますか?

4

1 に答える 1

1

IRepository から一部の Model クラスにアクセスできない場合は、構造を適用していません。

PictureSourceModelクラスと他のすべてのエンティティは、共通プロジェクトにある必要があります。 その後、「予想どおり」、他のすべてのプロジェクトがこれらのクラスにアクセスできるようになります。

EF エンティティを別のプロジェクトに分離できるようにするには、「Ef DbContext Generator」と呼ばれる Visual Studio 拡張機能の使用を検討してください。

さらに助けが必要な場合は、教えてください。

ところで: DAL で AutoMapper を使用しないようにしてください。これは、Gui プロジェクトで使用する必要があります。


アップデート

エンティティを POCO クラスに分離するには

  • 「 Ef DbContext Generator 」という Visual Studio 拡張機能をインストールします。
  • edmx ファイルを開き、空の領域を右クリックして、[コード生成項目の追加] を選択します。
  • リストから「Ef DbContext Generator」を選択します
  • 次に、新しいファイルを別のプロジェクトに移動するだけです
  • その後、.tt ファイルを開いて .edmx ファイル パスを修正する必要があります。
于 2012-09-27T14:35:26.740 に答える