【问题标题】:Error with Linq to Firebird Embedded (EF6.1 code first)Linq to Firebird Embedded 出错(EF6.1 代码优先)
【发布时间】:2014-03-25 01:08:03
【问题描述】:

当我尝试使用 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 库中的错误,我会感到惊讶(而且我没有在他们的错误跟踪器中看到它列出)。有谁知道我做错了什么?

编辑:该错误仍然存​​在于 Firebird ADO.NET Provider(适用于 Entity Framework 6)版本 4.1.5.0。

【问题讨论】:

  • 你正在运行什么 Firebird 服务器?
  • @cincura.net Firebird Embedded 出现错误,因此没有服务器。我正在使用 NuGet 的最新版本:Firebird ADO.NET Data provider (Entity Framework 6) version 4.1.0.0。
  • @vincentj 即使 Firebird Embedded 也有版本号。您使用的是哪个版本的 Firebird Embedded?
  • @MarkRotteveel 哦,对不起,我忘记了那些不是来自 NuGet 的! fbembed.dll 和 ib_util.dll 是 2.5.2.26540 版本。 ICU DLL 版本为 3.0.0.0。
  • 我刚刚在 Firebird 3.0 Alpha 2(版本 3.0.0.30809)和最新的快照版本 (3.0.0.30988) 上进行了尝试,都产生了同样的错误。

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


【解决方案1】:

信息太少了。

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

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

【讨论】:

  • 好主意,但不幸的是它没有奏效。我什至尝试映射到荒谬的名称,以为我在使用保留字,但我仍然得到错误。顺便说一句,我的程序over here 有更多详细信息(它只是一个很小的示例应用程序)。我试图避免用太多信息污染这篇文章。
【解决方案2】:

这是数据提供者中的一个错误,它一直是logged in the Firebird issue tracker。该错误的报告者好心provided a fix

该修复程序尚未纳入正式版本,但我能够download the provider source 并应用该修复程序以通过我的应用程序解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多