gpt4 book ai didi

sql-server - 使用 NHibernate(和 Fluent NH)以优于秒的精度(并且不截断毫秒)映射日期时间类型版本列

转载 作者:行者123 更新时间:2023-12-02 14:20:41 25 4
gpt4 key购买 nike

我有一个表,其中包含 datetime 类型列作为版本。它是一个遗留数据库,因此我不可能将其更改为 datetime2 或使用不同的版本控制机制。 NHibernate 类将其映射到 DateTime c# 类型属性。

我已经看到了有关此问题的几个问题以及论坛帖子和回复,但无论我尝试了什么,NHibernate 都会不断截断 DateTime 值的毫秒数。

这是我目前使用 Fluent NHibernate 所做的事情:

Version(x => x.ModifiedOn).Column("ModifiedOn")
.CustomType("Timestamp").Not.Nullable();

在我正在映射的类(class)中,我有:

public virtual System.DateTime ModifiedOn { get; set; }

数据库是MS SQL 2008,Fluent NH配置如下:

Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString......)

我需要什么:一个如何配置 Fluent NH 以使 NH 以毫秒为单位发送日期时间值的工作示例(从我在代码中看到的精度应该是 10 毫秒)。谢谢!

最佳答案

您所描述的行为(截断毫秒)是 NHibernate 对于 DateTime 值的默认行为,因此听起来 Fluent NHibernate 忽略了 .CustomType("Timestamp").您能否导出映射文件并在此处发布 *.hbm.xml 文件之一?这将帮助我们确定问题是出现在 NHibernate、Fluent NHibernate 还是其他地方。请参阅 Fluent NHibernate 文档 instructions on exporting the mapping files .

如果 Fluent NHibernate 工作正常,那么您应该看到类似的内容

<version name="ModifiedOn" type="Timestamp">
<column name="ModifiedOn" not-null="true" />
</version>

我想您会看到type="System.DateTime"。最可能的原因是您的 Fluent NHibernate 代码根本没有被执行。发布有关如何使用 Fluent NHibernate 创建 session 工厂的详细信息将有助于我们确定这是否是原因。

关于sql-server - 使用 NHibernate(和 Fluent NH)以优于秒的精度(并且不截断毫秒)映射日期时间类型版本列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6565111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com