我创建域项目来存储dbml文件和几个域类。我创建单元测试项目来测试CRUD操作。我将域项目引用到测试项目。
我在测试方法I try to access method db.SubmitChanges(); but It is not accessible
中的单元测试中声明了db上下文。
但是当单元测试文件存储在域项目中时,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 :(得分:8)
您需要在测试项目中添加对System.Data.Linq
程序集的引用。
创建dbml文件(数据上下文)时,程序集引用将添加到主项目中。为了使用所有LinqToSQL功能,您需要在使用DataContext的所有项目中引用System.Data.Linq
。
答案 1 :(得分:1)
选项:
using
指令,最有可能是您的db-context(解决方案:添加using Your.Namespace;
)public
之外的其他值(解决方案:在DBML中使其成为public
)