Я пишу тест базы данных для репозитория, который использует L2S.В моей базе данных есть сущность Manifest
и сущность AllocatedTransaction
.Сущность AllocatedTransaction имеет внешний ключ для идентификатора манифеста.DDL выглядит примерно так:
Manifest:
Id - int - identity
AllocateTransaction:
Id - int - identity
Quantity - int
ManifestId - FK to Manifest
В моем тесте я проверяю, возвращаются ли AllocatedTransactions с Манифестом.Тест выглядит следующим образом:
[TestMethod]
public void FindByIdTest()
{
using (data.EZTracDataContext dataContext = new data.EZTracDataContext())
{
using (new TransactionScope())
{
data.Manifest manifest = _testDataProvider.AddManifest(dataContext);
data.AllocatedTransaction allocatedTransaction = _testDataProvider.AddEligibilityAllocated(dataContext, 5, manifest.Id);
ManifestRepository repository = CreateRepository(dataContext);
var actual = repository.FindById(manifest.Id).AllocatedTransactions;
var expected = new[] { new domain.AllocatedTransaction(allocatedTransaction.Id, 5, manifest.Id) }.ToList();
CollectionAssertAreEqual(actual, expected);
}
}
}
_testDataProvider
просто добавляет записи в базу данных, используя переданный в dataContext
.Метод FindById
выглядит следующим образом:
public domain.Manifest FindById(int id)
{
var persistedManifest = GetPersistedManifest(id);
var requestedManifest = GetDomainManifestFromData(persistedManifest);
return requestedManifest;
}
private Manifest GetPersistedManifest(int manifestId)
{
return (from manifests in DataContext.Manifests
where manifests.Id == manifestId
select manifests).FirstOrDefault();
}
Моя проблема заключается в том, что объект Manifest, возвращаемый из DataContext, не имеет связанной с ним AllocateTransaction.Странно то, что существовавшие ранее манифесты do возвращаются с прикрепленными AllocatedTransactions.Может ли это быть причиной использования одного и того же объекта DataContext для вставки записей и их извлечения?Это ошибка с L2S?