为什么我的EF数据库不拾取对象?

问题描述 投票:0回答:1

我正在编写使用通过Autofac解析的数据库的单元测试。数据全部通过伪造进行模拟。

以下是数据示例:

internal static ICollection<ObjectA> GenerateObjectA(int numberToGenerate)
{
    var objectAIds = 1;

    var objectB = GenerateObjectB(1).First();

    var fakeObjectAs = new Faker<ObjectA>()
        .RuleFor(x => x.EntityStatus, f => EntityStatus.Active)
        .RuleFor(x => x.ObjectAId, f => objectAIds++)
        .RuleFor(x => x.ObjectB, f => objectB)
        .RuleFor(x => x.ObjectB, f => objectB.ObjectBId);

    return fakeObjectAs.Generate(numberToGenerate).ToList();
}

internal static ICollection<ObjectB> GenerateObjectB(int numberToGenerate)
{
    var objectBIds = 1;

    var fakeObjectB= new Faker<ObjectB>()
        .RuleFor(x => x.EntityStatus, f => EntityStatus.Active)
        .RuleFor(x => x.ObjectBId, f => objectBIds++);

    return fakeObjectB.Generate(numberToGenerate).ToList();
}

现在是我播种的位置:

var objectA = LogisticsSeedData.GenerateObjectA(1).First();

_contextOptionsHelper.Seed(objectA).Also(objectA.ObjectB);

_dbcontext.ObjectAs.Add(objectA);
_dbcontext.ObjectBs.Add(objectA.ObjectB);

_dbcontext.SaveChanges();

[每当我逐步完成测试的设置时,_dbContext都会按预期包含ObjectA.ObjectB,但是一旦我解析了服务并进入测试,数据库就会拥有ObjectA但ObjectB为空。我做错什么了吗?

c# entity-framework unit-testing autofac
1个回答
0
投票

没有看到您的测试很难说。确保在查询中包括嵌套数据。看起来应该如下所示:

_dbContext.ObjectAs.Include(a => a.ObjectBs)

相关信息here

如果这不是问题,可以尝试在问题中添加一些测试示例吗?这将帮助人们做出更具体的响应。

© www.soinside.com 2019 - 2024. All rights reserved.