【问题标题】:Fluent NHibernate: SQLite in-memory database and GUID generated on insertFluent NHibernate:SQLite 内存数据库和插入时生成的 GUID
【发布时间】:2014-07-03 09:05:16
【问题描述】:

我正在使用 SQLite 内存数据库进行测试。其中一个实体有一个列映射 在插入操作时生成 GUID。

this.Map(v => v.Code).Generated.Insert().ReadOnly();

首先,不会生成 GUID,插入的每条记录都有一个空的 GUID。 其次,我无法通过空 GUID 检索实体。

this.Session.Query<Entity>().FirstOrDefault(e => e.Code == code);

当我在保存实体之前在客户端手动生成 GUID 时,一切都很好。

有人有类似的问题吗?

谢谢

【问题讨论】:

  • 不是真正的 NH 专家,但在我正在进行的项目中,自动 GUID 映射如下:Map(x =&gt; x.Id).GeneratedBy.Assigned().Not.Nullable()
  • 这不是我用于 GUID 代码的 Id 列。基本上,我的代码运行良好,与真正的 MSSQL 数据库没有任何问题。此问题仅与我用于测试的 SQLite 内存数据库有关。

标签: c# sqlite unit-testing nhibernate fluent-nhibernate


【解决方案1】:

连接字符串是什么样子的?也许“data source=:memory:;BinaryGuid=False”可以解决这个问题。

【讨论】:

  • 我正在使用流畅的配置SQLiteConfiguration.Standard.InMemory()
  • 然后SQLiteConfiguration.Standard.Raw("connection.release_mode", "on_close").ConnectionString("data source=:memory:;Version=3;New=True;BinaryGuid=False");
  • BinaryGuid=False 没有帮助。仍然没有生成实体 Guid。
  • 似乎 ReadOnly() 块生成。
  • 删除 ReadOnly() 仍然没有指导
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2017-10-19
  • 1970-01-01
相关资源
最近更新 更多