Linq to Firebird嵌入式错误(EF6.1代码优先)
本文关键字:代码 EF6 to Firebird 嵌入式 错误 Linq | 更新日期: 2023-09-27 17:52:46
当我尝试使用Linq查询上下文时,我得到了Firebird嵌入式的Unknown data type
错误。
似乎只有当Linq生成一个参数化的查询发送到数据库时才会失败;如果该值是硬编码的,则可以正常工作。此外,它只在我的代码第一数据库失败;如果我先创建数据库,它就能工作。然而,我试图学习代码第一,所以创建数据库不是一个选项。
using (var context = new FirebirdDbContext(connectionString))
{
context.Users.Add(new User()
{
Created = DateTime.Now,
Name = "smith"
});
context.SaveChanges();
bool found = context.Users.Any(u => u.Name == "smith"); // this works
string name = "smith";
found = context.Users.Any(u => u.Name == name); // exception
}
应用程序的其余部分与我的其他帖子相同,除了我现在使用实体框架6.1.0。实际上,错误也是一样的,只是原因不同。
如果这是Firebird库中的一个bug,我会很惊讶(我没有在他们的bug跟踪器中看到它)。有人知道我哪里做错了吗?
编辑:这个错误仍然发生在火鸟ADO。. NET Provider (for Entity Framework 6) version 4.1.5.0.
信息太少了
尝试将所有表和列的名称映射为大写,使用ToTable和HasColumnName在流畅映射。
当我这样做的时候,当我验证实体框架和嵌入的Firebird 2.5的兼容性时,大多数奇怪的错误都消失了。
这是数据提供程序中的一个错误,已记录在Firebird问题跟踪器中。该漏洞的报告者已经提供了一个修复程序。
这个修复还没有被纳入官方发布,但我能够下载提供程序源代码并应用修复来解决我的应用程序的这个问题。