2011-07-15 37 views
3

我打包域項目以存儲dbml文件和多個域類。我創建了單元測試項目來測試CRUD操作。我將域項目引用到測試項目中。在域項目之外訪問LINQ to SQL數據上下文

我在單元測試中聲明瞭db上下文,在測試方法I try to access method db.SubmitChanges(); but It is not accessible中。

但是當單元測試文件存儲在域項目中時,db方法是可訪問的。

[TestFixture] 
class CustomerRepositoryTest 
{ 
    NorthWindDataContext db = new NorthWindDataContext(); 
    Customer _customer = null; 

    [SetUp] 
    public void SetUp() { 
     //initialize customer 
    } 

    [Test] 
    public void Should_able_to_get_data_when_data_is_inserted() 
    { 
     db.Customers.InsertOnSubmit(_customer); 
     db.SubmitChanges(); 

     Customer customer = db.Customers.FirstOrDefault(c => c.CustomerID == _customer.CustomerID); 

     Assert.AreEqual(customer.CustomerID.Trim(), _customer.CustomerID); 
     Assert.AreEqual(customer.ContactName.Trim(), _customer.ContactName); 
    } 

    [TearDown] 
    public void After() 
    { 
     db.Customers.DeleteOnSubmit(_customer); 
     db.SubmitChanges(); 
    } 
} 

讓我知道如何解決這個問題。

編輯

Error 1 'AppProject.Domain.NorthWindDataContext' does not contain a definition for 'SubmitChanges' and no extension method 'SubmitChanges' accepting a first argument of type 'AppProject.Domain.NorthWindDataContext' could be found (are you missing a using directive or an assembly reference?) D:\tutorial\dotNET\LINQtoSQL\AppProject.Spec\Should_insert_customer.cs 40 16 AppProject.Spec 
+0

在您的例子請具體談談預期什麼行不通,因爲這應該是罰款 –

+1

我嘗試ACC從單元測試項目中的單元測試文件中獲取數據庫上下文方法。但該方法不可訪問。但是,當單元測試存儲在域項目中時,可以訪問數據庫上下文方法。 –

+0

你是什麼意思的「db上下文方法」。什麼線路失敗?什麼信息? –

回答

8

您需要在您的測試項目中添加引用System.Data.Linq組裝。 創建dbml文件(數據上下文)時,程序集引用被添加到主項目中。爲了使用所有的LinqToSQL功能,您需要在使用DataContext的所有項目中引用System.Data.Linq

+0

我已經使用System.Data.LINQ添加了,但是我的單元代碼仍然沒有獲取數據庫上下文方法,我也已經使用Project.Domain命名空間來進行單元測試 –

+1

你對好友,在我重新檢查後,我忘了添加'System.Data.Linq'的引用,對於我上面的錯誤感到抱歉。 –

1

選項:

  • 你缺少一個或更多的using指令,最有可能您的DB-背景:在DBML(溶液添加using Your.Namespace;
  • ,也許您設置的DB-背景可訪問修飾符比public以外的東西(的解決方案:在DBML使其public
+0

我已經在單元測試代碼中使用Appproject.Domain。存儲在Appproject.Domain項目中的dbml文件。 t改變dbml代碼,我在Visual Studio中看到db上下文是public:'public partial class NorthWindDataContext',但我無法訪問db.SubmitChanges()方法 –

+0

@adisembiring並再次... *確切消息*請 –

+0

我已經編輯我的文章,希望我的問題更清楚。 –