当我尝试使用Linq查询上下文时,我收到Firebird Embedded的Unknown data type
错误。
当Linq生成参数化查询以发送到数据库时,它似乎只会失败;如果值是硬编码的,它可以正常工作。此外,它只在我的Code First数据库上失败;如果我先创建数据库,它就可以了。但是,我正在尝试学习Code First,因此创建数据库不是一种选择。
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
}
应用程序的其余部分与我other post中的相同,但我现在使用的是Entity Framework 6.1.0。事实上,错误也是一样的,但原因是不同的。
如果这是Firebird库中的一个错误(我没有在他们的bug跟踪器中看到它列出),我会感到惊讶。有谁知道我做错了什么?
编辑:Firebird ADO.NET Provider(适用于Entity Framework 6)版本4.1.5.0仍然会出现此错误。
答案 0 :(得分:0)
信息太少了。
尝试使用流畅映射中的ToTable和HasColumnName将所有表和列名称映射为大写。
当我在验证Entity框架和Firebird 2.5嵌入的兼容性时,大多数奇怪的错误都消失了。
答案 1 :(得分:0)
这是数据提供程序中的错误,该错误已为logged in the Firebird issue tracker。那个虫子的记者好心provided a fix。
此修补程序尚未合并到正式版本中,但我能够download the provider source并应用此修复程序来解决我的应用程序中的问题。