Tag: nhibernate

在asp.net-mvc中,如何在不降低用户体验的情况下运行昂贵的操作?

我有一个asp.net-mvc网站,我正在为我的ORM使用nhibernate。 我有一个当前的控制器操作,它执行基本的CRUD更新(从数据库中查询项目,然后更新一堆值并提交回db表)。 然后它向客户端返回一个简单的json响应,以指示成功或错误。 public ActionResult UpdateEntity(MyEntity newEntity) { var existingEntity = GetFromRepository(newEntity.Id); UpdateExistingEntity(newEntity, existingEntity); return Json(SuccessMessage); } 在某些情况下(假设提交成功并且如果我的对象中的某些字段发生了变化)我现在想要触发一些额外的操作(比如通过电子邮件发送一堆人并运行一些生成报告的代码)但我不想放慢速度降低正在进行更新的人的用户体验。 所以我担心的是,如果我这样做: public ActionResult UpdateEntity(MyEntity newEntity) { var existingEntity = GetFromRepository(newEntity.Id); bool keyFieldsHaveChanged = UpdateExistingEntity(newEntity, existingEntity); if (keyFieldsHaveChanged) { GenerateEmails(); GenerateReports(); } return Json(SuccessMessage); } 这对于某人更新的用户体验来说太慢了。 无论如何(asyngc?)有一个昂贵的操作被控制器动作触发但是没有控制器动作因此而减慢?

NHibernate.Spatial和Sql 2008地理类型 – 如何配置

我试图使用Nhibernate与Sql 2008地理类型,并有困难。 我正在使用Fluent Nhibernate来配置我相当新的,所以这也可能是问题。 首先,我试图坚持的课程看起来像: public class LocationLog : FluentNHibernate.Data.Entity { public virtual new int Id {get;set;} public virtual DateTime TimeStamp {get;set;} public virtual GisSharpBlog.NetTopologySuite.Geometries.Point Location {get;set;} } 映射类如下所示: public class LocationLogMap : ClassMap { ImportType(); Id(x => x.Id); Map(x => x.TimeStamp).Generated.Insert(); Map(x => x.Location); } 为了将MsSql2008GeographyDialect与Fluent Nhibernate一起使用,我创建了自己的配置类: public class Sql2008Configuration : PersistenceConfiguration { public […]

流利的NHibernate多对多

我正在使用Fluent NHibernate并且遇到一些问题,我的一个类可以设置多对多的关系。 这可能是一个愚蠢的错误,但我已经陷入了一点点试图让它运作。 无论如何,我有几个有许多关系的课程。 public class Person { public Person() { GroupsOwned = new List(); } public virtual IList GroupsOwned { get; set; } } public class Groups { public Groups() { Admins= new List(); } public virtual IList Admins{ get; set; } } 映射看起来像这样 人:…… HasManyToMany(x => x.GroupsOwned) .WithTableName(“GroupAdministrators”) .WithParentKeyColumn(“PersonID”) .WithChildKeyColumn(“GroupID”) .Cascade.SaveUpdate(); 团体:…… HasManyToMany(x […]

NHibernate或LINQ to SQL

如果开始一个新项目,你将使用什么ORM NHibernate或LINQ以及为什么。 每种方法的优缺点是什么? 编辑:LINQ to SQL不只是LINQ(感谢@Jon Limjap)

尝试运行Fluent NHibernate教程示例时出现运行时错误

我在http://wiki.fluentnhibernate.org/Getting_started上完成了Fluent NHibernate教程,该项目编译得很好。 但是,我收到运行时错误,我似乎无法解决它。 您可以在教程中看到的CreateSessionFactory方法中发生错误。 这里是: private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database ( SQLiteConfiguration.Standard .UsingFile(DbFile) ) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) .BuildSessionFactory(); } 我认为最有帮助的事情是给你从最外层exception到最内层exception的exception链(这是一个真正的单词): An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail. An invalid or incomplete configuration was used while creating a SessionFactory. Check […]

使用NHibernate的ISession.Get ()w /复合键

我在数据库表/ NHibernate实体中有一个复合键。 我可以以某种方式使用.Get方法来获取特定实体,还是因为复合键而必须使用HQL / Criteria?

NHibernate 3.2 Loquacious API入门

我正在开始一个新项目,我想使用NHibernate 3.2。 我知道它现在可以做类似于FluentNHibernate的事情,我想尝试一下。 但是我很难找到关于Loquacious API的文档。 我看过关于如何配置ISessionFactory的博客 文章 ,但在此之后我迷路了。 我知道3.2 API正在快速发展,大约3到4个月的文章已经过时,但我正在寻找最新的信息。 我在哪里可以找到有关的资源: 如何在不使用FluentNHibernate且不使用ConfORM的情况下设置NHibernate 3.2而不使用XML? 如何注册映射? 如何创建约定? 请记住,这是关于NHibernate 3.2(可能在上面)。 如果映射和约定等任何概念不再适用,请您指出正确的方向吗? 我对NHibernate和FluentNHibernate有一些经验,因为我将它们用于一个小项目,但它并不是很复杂。

通过nHibernate Criterion使用SQL CONVERT函数

我有一个sql视图,其中每列的数据类型是string ,用于jquery datatables插件。 其中一列包含英国格式日期dd / mm / yyyy。 此列需要保留一个字符串才能使用插件的击键过滤,但是对于排序,需要将其视为日期。 我使用nhibernate标准来创建sql查询,我想生成以下order by子句,因为这正确地命令日期 order by CONVERT (datetime, DateOfBirth, 103) 但是在Nhibernate.Criterion.Projections中没有Convert方法。 有Cast ,但由于它是英国日期格式,我收到以下错误: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value 我试过也试过以下: criteria.AddOrder( Order.Desc( Projections.SqlFunction( “CONVERT”, NHibernateUtil.DateTime, new IProjection[] { Projections.Property(propNames[orderByColumn]), Projections.Property(“104”) } ) ) ); 但是我收到以下错误消息: NHibernate.HibernateException: Current […]

使用带有NHibernate命名查询的未映射类

我正在使用NHibernate的自定义命名查询,我想返回Person对象的集合。 Person对象没有映射到NHibernate映射,这意味着我得到以下exception: System.Collections.Generic.KeyNotFoundException:给定的键不在字典中。 在创建Session时会抛出它,因为它在调用NHibernate.Cfg.Mappings.GetClass(String className)时找不到类名。 这一切都是可以理解的,但我想知道是否有任何方法告诉NHibernate使用该类,即使我没有它的映射?

NHibernate Deleted对象将通过级联重新保存

在我的解决方案中,我有一个带关联的业务对象分支。 因此,当我尝试在处理后保存根对象时,我得到一个exception,其中包含消息“已删除的对象将通过级联重新保存”。 这意味着在删除对象后,它仍然存在于集合中,其他关联等等。 有人知道如何获取已删除对象的引用列表。 没有调试器支持很难找到引用。