简体   繁体   English

ASP.NET Effort CsvLoader 不返回数据

[英]ASP.NET Effort CsvLoader does not return data

I'm using Entity Framework 6 with Code First and I want to mock my DbContext for unit testing.我将 Entity Framework 6 与 Code First 一起使用,我想模拟我的 DbContext 进行单元测试。 Because I need lots of test data for the unit tests, I wanted to load them from a csv-file using Entity Framework Effort ( https://entityframework-effort.net/ ).因为我需要大量的单元测试测试数据,所以我想使用 Entity Framework Effort ( https://entityframework-effort.net/ ) 从 csv 文件加载它们。

I don't get any errors, but I also don't get any data from the csv-file.我没有收到任何错误,但我也没有从 csv 文件中获取任何数据。 All I get is a DbContext (the FapContext in the code) with no data.我得到的只是一个没有数据的 DbContext(代码中的 FapContext)。

Do you have any suggestions to solve my problem?你有什么建议可以解决我的问题吗?

Unit Test with NUnit:使用 NUnit 进行单元测试:

    private FapContext context;
    private IUnitOfWork unitOfWork;
    private IDataLoader csvLoader;
    private IDataLoader dataLoader;

    [SetUp]
    public void SetUp()
    {
        this.csvLoader = new CsvDataLoader(@"C:\path\TestData\CSV-TestData");
        this.dataLoader = new CachingDataLoader(this.csvLoader, false);
        DbConnection connection = DbConnectionFactory.CreateTransient(this.dataLoader);

        try
        {
            this.context = new FapContext(connection);
            this.context.Database.CreateIfNotExists();
        }
        catch (Exception e)
        {
            Debug.Print(e.GetType().FullName);
            throw;
        }

        this.unitOfWork = new UnitOfWork(this.context);
    }

    [Test]
    public void ShouldReturnData()
    {
        // Arrange
        List<State> states = this.context.States.ToList();

        // Act

        // Assert
        Assert.IsNotNull(states);           // passes
        Assert.IsTrue(states.Count > 0);    // don't pass
    }

CSV-File: CSV 文件:

ID,StateGroupID,Name,Description,CreatedAt,ChangedAt,RowVersion
"187968CE-0489-4A57-81F4-0BECDF9CC005","5FBAD179-68F5-46D2-A0A6-82516A3F2E4D","APPROVED","Approved material",,,
"222E365D-A8D7-4DFF-8807-18EC85481FD8","AED80358-D2A3-4CC9-A7E5-EA1C8931C27A","Running",,,,
"8433F457-31F1-40D4-AF78-2058415407F7","28E828D7-6B5B-9BEC-928D-101DEB38B4C5","Pending",,,,

I know this question is pretty old, but I just recently ran into this while adding tests to an old EF6 project.我知道这个问题已经很老了,但我最近在向旧的 EF6 项目添加测试时遇到了这个问题。

OP didn't document their CSV filename. OP 没有记录他们的 CSV 文件名。 I'm going to guess your filename doesn't match your DBContext's property names exactly.我猜你的文件名与你的 DBContext 的属性名不完全匹配。 You need to match the property name, not the class name.您需要匹配属性名称,而不是类名称。 I'm assuming your pluralization differs from model/table to property.我假设您的复数形式因模型/表到属性而异。 Example: I'm guessing your CSV filename is something like State.csv while your DbContext property name is States .示例:我猜您的 CSV 文件名类似于State.csv而您的 DbContext 属性名称是States

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM