访问域项目之外的LINQ to SQL数据上下文

本文关键字:to SQL 数据 上下文 LINQ 项目 访问 | 更新日期: 2023-09-27 18:02:14

创建域项目来存储dbml文件和几个域类。我创建了单元测试项目来测试CRUD操作。我将域项目引用到测试项目。

我在单元测试中声明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

访问域项目之外的LINQ to SQL数据上下文

您需要在测试项目中添加对System.Data.Linq程序集的引用。在创建dbml文件(数据上下文)时,将程序集引用添加到主项目中。为了使用所有的LinqToSQL功能,您需要在使用DataContext的所有项目中引用System.Data.Linq

选项:

  • 您缺少一个或多个using指令,最有可能是您的db-context(解决方案:添加using Your.Namespace;)
  • 在DBML中,也许您将db-context可访问性修饰符设置为public以外的东西(解决方案:在DBML中使其为public)