gpt4 book ai didi

c# - 通过 (Fluent)NHibernate 添加到 SQLite DB 时 DateTime 不正确

转载 作者:IT王子 更新时间:2023-10-29 06:26:35 29 4
gpt4 key购买 nike

我有一个要存储到 SQLite 数据库的组件。

public class Comp : Entity
{
public virtual DateTime TimeStamp { get; set; }
public virtual String Name { get; set; }
}

public class CompMap : ClassMap<Comp>
{
public CompMap()
{
Id(x => x.Id);
Map(x => x.TimeStamp);
Map(x => x.Name);
}
}

真的没什么特别的。

问题是 TimeStamp 未正确存储在数据库中(SQLite-Explorer 显示值“30-12-1899”)我认为这与 nHibernate 将 DateTime 发送到数据库的方式有关

NHibernate: INSERT INTO "Comp" (TimeStamp, Name) VALUES (@p0, @p1); select last_insert_rowid(); @p0 = 26.02.2010 10:08:09, @p1 = 'test1'

对我来说,DateTime 似乎是字符串格式(可能只是 .ShowSQL() 命令),SQLite 无法处理该格式(这是德国日期时间格式)我尝试使用 IUserType 更改格式,但结果仍然相同。

我没有发现其他人有这个问题,所以我假设问题出在我的代码中,但我找不到它。

这是我用来初始化数据库并将值插入数据库的测试代码

using System;
using System.IO;
using ConsoleApplication1.db;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var sessionFactory = Fluently.Configure().Database(SQLiteConfiguration.Standard.UsingFile("test.db").ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssembly(typeof(Comp).Assembly))
.ExposeConfiguration(config =>
{
if (File.Exists("test.db"))
{
File.Delete("test.db");
}
new SchemaExport(config)
.Create(false, true);
})
.BuildSessionFactory();
var session = sessionFactory.OpenSession();
var ts = DateTime.Now;
Comp c = new Comp
{
Name = "test1",
TimeStamp = ts
};
session.Save(c);
session.Flush();
session.Close();
}
}
}

当执行此命令并检查数据库内容时,时间戳不是当前日期/时间,而是 1899-31-12

最佳答案

事实证明这确实是我的错加上严重缺乏双重检查。我确实将日期时间写入数据库,然后使用 sqlite explorer 检查数据库中的值.显然,日期时间字段存在问题,并且确实提供了不正确的值。

那个,再加上原来的程序确实有一个错误(日期时间写得不正确)。

我的结论是:不要使用 sqlite explorer

LinqPad确实正确显示了该值,因此将从现在开始使用。

关于c# - 通过 (Fluent)NHibernate 添加到 SQLite DB 时 DateTime 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340611/

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