gpt4 book ai didi

c# - 判断 NHibernate 实体是否有级联记录

转载 作者:行者123 更新时间:2023-11-30 23:34:05 29 4
gpt4 key购买 nike

我正在循环并向我的数据库中插入几百万条记录。性能是第一要务。

我想利用无状态 session ,但您可能知道它们不支持在更复杂的实体上级联对象。

是否有一种通用方法可以确定实体是否具有级联记录?如果是,我将使用常规 session ,如果不是,我将使用无状态 session 。

这样做有意义吗?如果是这样,最好的方法是什么?

protected virtual ISession Session
{
get { return ....SessionFactory.GetCurrentSession(); }
}

protected virtual IStatelessSession StatelessSession
{
get { return ....SessionFactory.OpenStatelessSession(); }
}

public virtual T SaveOrUpdate(T entity)
{
if(entity.HasCascadingrecords) //<- Something like this
{
Session.Save(entity);
}
else
{
StatelessSession.Save(entity);
}
}

最佳答案

让我们按照这些来获得更多初始细节:

最后,我们可以使用如下代码片段:

// get type of the Entity we need
var entityType = typeof(TEntity);

// get persister
var entityType = typeof(TEntity);
var factory = ... // get factory
var persister = factory.GetClassMetadata(entityType) as AbstractEntityPersister;

// check this setting
var hasCascades = persister.HasCascades;

// use it somehow
return hasCascades

关于c# - 判断 NHibernate 实体是否有级联记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616657/

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