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

标签 c# asp.net-mvc nhibernate fluent-nhibernate

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

我想利用无状态 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/

相关文章:

nhibernate - 使用 ORM 时如何实现命令查询分离 (CQS)?

c# - 如何以编程方式在 EA 中触发文档生成

c# - 使用 Sendgrid 在 Azure 上发送简单的电子邮件

c# - 计算 "Pie Segment"和 "sub areas"区域的边界点

jquery.validate v. 1.9 忽略一些隐藏的输入

一页中多个表单的 asp.net mvc 客户端验证

c# - 如何在参数化查询中将字符串作为日期时间值传递

asp.net - 加密票证参数的值无效

nhibernate - Fluent NHibernate AutoMapping SchemaExport - 更改对象模型和保存数据

nhibernate - 升级到 nhibernate 3.1