Linq到Firebird Embedded时出错(首先是EF6.1代码)

时间:2014-03-25 01:08:04

标签: c# linq ef-code-first firebird entity-framework-6

当我尝试使用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仍然会出现此错误。

2 个答案:

答案 0 :(得分:0)

信息太少了。

尝试使用流畅映射中的ToTable和HasColumnName将所有表和列名称映射为大写。

当我在验证Entity框架和Firebird 2.5嵌入的兼容性时,大多数奇怪的错误都消失了。

答案 1 :(得分:0)

这是数据提供程序中的错误,该错误已为logged in the Firebird issue tracker。那个虫子的记者好心provided a fix

此修补程序尚未合并到正式版本中,但我能够download the provider source并应用此修复程序来解决我的应用程序中的问题。