gpt4 book ai didi

c# - 使用 SQLite 测试 ASP Net Core 应用程序抛出未知函数 : newid()

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:57 26 4
gpt4 key购买 nike

我正在测试我的服务层,它包含一些使用 SQLite 数据库提供程序对存储库的调用。我的测试类是根据以下介绍编写的: https://learn.microsoft.com/en-us/ef/core/miscellaneous/testing/sqlite

对于本次测试用例写入数据库的实体,Guid是在数据库上生成的:

entity.Property(e => e.Guid).HasDefaultValueSql("newid()");

现在当尝试添加一个新实体时(没有明确设置 Guid),我得到以下异常:

SQLite Error 1: 'unknown function: newid()'.

有办法解决这个问题吗?似乎根本不支持此功能。由于我使用的数据库很旧,我恐怕找不到更多这样的地方可能无法正常工作。

我希望通过 SQLite 获得比使用 InMemoryDatabase 提供程序更好的单元测试,后者并不真正适合测试“关系数据库功能”。但是如果这个问题不能解决,我就卡住了,可能需要坚持集成测试(至少对于我服务的数据访问部分)

最佳答案

如果引用 Microsoft.Data.SqLite,则可以在 c# 中创建自定义函数来执行此操作

例如:

var connectionStringBuilder = new SqliteConnectionStringBuilder { DataSource = ":memory:" };
var connection = new SqliteConnection(connectionStringBuilder.ToString());

connection.CreateFunction("newid", () => Guid.NewGuid());

See here for a comparison between System.Data.SQLite and Microsoft.Data.Sqlite

关于c# - 使用 SQLite 测试 ASP Net Core 应用程序抛出未知函数 : newid(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47292970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com