2

我試圖使用像一個在這裏找到一個通用的存儲庫來實現存儲庫模式的範圍解決實體:實體框架用實體框架實現存儲庫模式。問題庫

我創建了一個測試套件實現存儲庫模式(我使用NUnit)來測試存儲庫,但我一直有問題。下面是我得到的錯誤:

MyBusiness.Test.Domain.RepositoryTest.SelectCol:
System.Data.EntitySqlException: 「ColCoordinate」無法解析當前範圍或上下文 。使 確定所有引用變量的範圍爲 ,所需的模式爲加載 ,並且該名稱空間爲 正確引用,接近轉義 標識符。

我相信這是此方法來:

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

我已經取得了一定要在頁面的頂部添加引用:

using MyBusiness.Domain.DomainModel.EntityFramework; 

這裏是我的測試設置和測試方法:

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 2009-09-15 22:16:33

回答

3

那麼你的代碼標識:

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

很懷疑,在類型名稱是不是需要什麼,你需要的EntitySet的名稱,有時他們是同樣的事情,但通常他們不是,特別是如果您手動更新模型以獲得更多可讀屬性。

例如,如果您有:

ctx.Customers它返回一個類型,稱爲客戶,typeName爲客戶的EntitySet的名稱是客戶。

Tip 13在我的series of tips有一些代碼,告訴你如何從類型獲取EntitySet名稱。

希望這有助於

亞歷