c# - 在域项目外访问 LINQ to SQL datacontext

标签 c# linq-to-sql nunit

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

我在单元测试中声明了数据库上下文,在测试方法中 我尝试访问方法 db.SubmitChanges();但它不可访问

但是当单元测试文件存放在domain project中时,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

最佳答案

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

关于c# - 在域项目外访问 LINQ to SQL datacontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6702871/

相关文章:

c# - 当设置为异步时,是否有人在使用 Ctrl-R、T 运行特定的本地突出显示的测试时遇到问题?

c# - 使用自定义功能覆盖 MVC 模型显示名称注释

linq - 优化 LINQ to SQL 查询

c# - 使用新的架构更改更新 LinqtoSql 数据库?

c# - 除非我断言方法的返回值,否则测试不会执行方法

c# - 使用 Moq (C#) 监视对象

c# - 通过 Interop/pinvoke 传递 C# 回调函数

c# - linq-to-sql .All() 或 .Any() 查找匹配条件的所有项目

unit-testing - 如何获得 NUnit 的 ExpectedException 属性来检测异常的基类?

c# - 如何在 Entity Framework 中模拟存储库和工作单元模式?