Доступ к контексту данных LINQ to SQL вне проекта домена - PullRequest
3 голосов
/ 15 июля 2011

Я создаю проект домена для хранения файла dbml и нескольких классов домена. Я создаю проект модульного теста для проверки работы CRUD. Я ссылаюсь на проект домена для тестового проекта.

Я объявляю контекст БД в модульном тесте, в методе теста 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();
    }
}

Дайте мне знать, как это исправить.

EDIT

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

Ответы [ 2 ]

8 голосов
/ 15 июля 2011

Вам нужно добавить ссылку на System.Data.Linq сборку в вашем тестовом проекте.Ссылка на сборку добавляется в ваш основной проект при создании файла dbml (контекст данных).чтобы использовать все функциональные возможности LinqToSQL, вам необходимо ссылаться на System.Data.Linq во всех проектах, где используется DataContext

1 голос
/ 15 июля 2011

Опции:

  • вам не хватает одной или нескольких директив using, скорее всего, для вашего db-контекста (решение: добавьте using Your.Namespace;)
  • вDBML, может быть, вы установите для модификатора доступности db-context что-то отличное от public (решение: сделайте его public в DBML)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...