gpt4 book ai didi

nhibernate - 在 nhibernate 中启用 SQLite 外键

转载 作者:行者123 更新时间:2023-12-03 08:24:21 26 4
gpt4 key购买 nike

我了解到,在 sqlite 中启用 FK 约束的唯一方法是打开这个 pragma:

PRAGMA foreign_keys = ON;

但不幸的是,如果我理解正确,我将不得不在每个 session 开始时执行该查询。我对么?
如何使用 NHibernate“自动”完成它?有没有办法连接到 NH 并在打开 session 后立即执行?
我正在使用 NH 3.0。

最佳答案

好的,我找到了适合我的答案。致谢 James Kovacs (similar question)

我基于 SQLite20Driver 和重载的 CreateConnection 方法创建了自己的驱动程序(代码来自 James' GitHub)

public override IDbConnection CreateConnection()
{
DbConnection connection = (DbConnection)base.CreateConnection();
connection.StateChange += Connection_StateChange;
return connection;
}

private static void Connection_StateChange(object sender, StateChangeEventArgs e)
{
if ((e.OriginalState == ConnectionState.Broken || e.OriginalState == ConnectionState.Closed || e.OriginalState == ConnectionState.Connecting) &&
e.CurrentState == ConnectionState.Open)
{
DbConnection connection = (DbConnection)sender;
using (DbCommand command = connection.CreateCommand())
{
// Activated foreign keys if supported by SQLite. Unknown pragmas are ignored.
command.CommandText = "PRAGMA foreign_keys = ON";
command.ExecuteNonQuery();
}
}
}

奇迹般有效 :)。

关于nhibernate - 在 nhibernate 中启用 SQLite 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850331/

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