2

私はここで見られるもののような一般的なリポジトリを使用してリポジトリのパターンを実装しようとしているの範囲内のエンティティを解決する問題:私が使用している(私はテストスイートを作成しましたエンティティフレームワークを使用したリポジトリパターンの実装。リポジトリ

Entity Frameworkのでリポジトリパターンを実装しますNUnit)を使ってリポジトリをテストしましたが、問題がありました。

MyBusiness.Test.Domain.RepositoryTest.SelectCol:
System.Data.EntitySqlException: 「ColCoordinate」は現在のスコープまたは文脈で 解決できませんでしたここで私が取得していますエラーです。 は、参照されるすべての変数が であり、必要なスキーマが であり、その名前空間が正しく参照されていることを確認してください。 は、エスケープされた の識別子です。

using MyBusiness.Domain.DomainModel.EntityFramework; 

ここに私のテスト・セットアップとテストだ:私は、ページの上部に参照を追加してください作った

public ObjectQuery<E> DoQuery() 
{ 
    return _ctx.CreateQuery<E>("[" + typeof(E).Name + "]"); 
} 

は、私はそれがこの方法から来ています信じています方法:

Repository<ColCoordinate, ObjectContext> _colRepository = null; 
    ObjectContext _context = null; 
    EntityContextCreator contextCreator = null; 

    [SetUp] 
    public void SetUp() 
    { 
     contextCreator = new EntityContextCreator(); 

     _context = contextCreator.Create(); 
     _colRepository = new Repository<ColCoordinate, ObjectContext>(_context); 
    } 

    [Test] 
    public void SelectCol() 
    { 
     IList<ColCoordinate> colList = _colRepository.SelectAll(); 
     Assert.True(colList.Count > 0); 
    } 

誰もがこのエラーが表示されるまたはそれを修正する方法に関する提案がありますか?

さらに詳しい情報が必要な場合は、質問を更新してください。

おかげで、
マット

+0

に役立ちます。 – CraftyFella

答えて

3

さてあなたは、識別コード:

public ObjectQuery<E> DoQuery(){  
     return _ctx.CreateQuery<E>("[" + typeof(E).Name + "]"); 
} 

は時々、彼らは同じものです、型名が必要とされるものではありません、あなたはのEntitySet名を必要とする、非常に疑わしいです特に読みやすいプロパティを持つようにモデルを手動で更新した場合は特にそうではありません。例えば

お持ちの場合:お客様と呼ばれるタイプを返し

ctx.Customersを、型名はのEntitySet名はお客様であるお客様です。

Tip 13私のseries of tipsには、タイプからEntitySet名を取得する方法を示すコードがいくつかあります。

希望は、このリンクが失われているようだ「とEntity Frameworkの実装リポジトリパターン」

アレックス