草庐IT

Fluent-NHibernate

全部标签

c# - NHibernate - 非空属性引用空值或 transient 值

我遇到了这个异常(底部的完整异常):NHibernate.PropertyValueExceptionwasunhandledbyusercodeMessage="not-nullpropertyreferencesanullortransientvalueClearwave.Models.Encounters.Insurance.Patient"Source="NHibernate"EntityName="Clearwave.Models.Encounters.Insurance"PropertyName="Patient"我已经进行了大量的谷歌搜索,这似乎是最常见的原因该错误是当关

c# - NHibernate 中的 StatelessSession 和 Session 有什么区别?

StatelessSession和NHibernate中的Session有什么区别? 最佳答案 无状态session不跟踪检索到的实体。例如对于常规ISession以下代码:varsession=sessionFactory.OpenSession()using(vartransaction=session.BeginTransaction()){varuser=session.Get(1);user.Name="changedname";transaction.Commit();}将导致数据库更新。这种跟踪会消耗内存并使ISess

c# - 使用 Moq 模拟 NHibernate ISession

我正在使用NHibernate、ASP.NETMVC2.0和StructureMap开始一个新项目,并使用NUnit和Moq进行测试。对于我的每个Controller,我都有一个公共(public)构造函数,其中注入(inject)了一个ISession。应用程序本身运行良好,但就单元测试而言,我基本上必须模拟一个ISession才能测试Controller。当我尝试使用MOQ模拟ISession时,我收到以下错误消息:Onlypropertyaccessesaresupportedinintermediateinvocations看来我的问题是期待来自框架CreateQuery方法的

c# - 在使用 Fluent NHibernate 映射时对接口(interface)进行编程

我已被迫屈服并开始学习FluentNHibernate(之前没有NHibernate经验)。在我的项目中,我正在对接口(interface)进行编程以减少耦合等。这意味着几乎“一切”都指的是接口(interface)而不是具体类型(IMessage而不是Message)。这背后的想法是通过能够模拟依赖关系来帮助提高它的可测试性。但是,当我尝试映射到接口(interface)而不是具体类时,(流畅的)NHibernate并不喜欢它。问题很简单——根据FluentWiki,定义我的类的ID字段是明智的,例如intId{get;privateset;}获取典型的自动生成的主键。但是,这仅适用

c# - NHibernate DuplicateMappingException 当两个类具有相同的名称但不同的命名空间时

我的域模型根中有一个类,如下所示:namespaceDomain{publicclassFoo{...}}我在不同的命名空间中还有另一个同名的类:namespaceDomain.SubDomain{publicclassFoo{...}}对于我的映射,我有一个Mapping目录和一个名为SubDomain的子目录,其中包含在Domain.SubDomain中找到的域类的映射命名空间。它们都在同一个程序集中。但是,当我尝试使用NHibernate加载它们时,我不断收到DuplicateMappingException...即使两个Foos具有不同的命名空间。我用来加载我的NHiberna

c# - NHibernate Definitive Cascade 应用指南

是否有任何Internet资源对NHibernate的所有级联设置都有明确的指南,其中包括类结构的示例、HBM以及每个级联设置对与NH的所有关系的操作的影响。如果有以最正确的方式完成常见关联的示例,例如设置一个状态表,您将永远不会级联删除一个状态,或者删除一个具有CreatedBy的对象,这也会很有帮助用户属性永远不会以级联等方式删除用户。 最佳答案 以下内容改编自JavaHibernate引用http://docs.jboss.org/hibernate/stable/core/manual/en-US/html/objectst

c# - 如何使用 Entity Framework Fluent API 配置多对多关系

我试图先在EF代码中建立多对多关系,但默认约定出错了。以下类描述了这种关系:classProduct{publicintId{get;set;}publicstringName{get;set;}}classAccount{publicintId{get;set;}publicstringName{get;set;}publicvirtualICollectionProducts{get;set;}}一个帐户可以有多个产品。但是EF约定将创建数据库表为:ProductsTable--------------IdNameAccount_Id这不像是多对多的表结构?我如何配置流畅的API以

c# - NHibernate HQL Generator 支持 SQL Server 2016 时态表

我正在尝试在NHibernate4.x中实现对SQLServer2016时态表的基本支持。这个想法是改变SQL语句从SELECT*FROMTablet0到SELECT*FROMTableFORSYSTEM_TIMEASOF'2018-01-1600:00:00't0您可以在SQLServer2016中找到有关时态表的更多信息here不幸的是,我还没有找到任何方法来在表名及其别名之间插入FORFORSYSTEM_TIMEASOF'...'语句。我不确定自定义方言是否支持这一点。我目前唯一可行的解​​决方案是在额外的WHERE中附加FORSYSTEM_TIME语句,我的输出SQL如下所示S

c# - 如何使 Fluent API 配置与 MVC 客户端验证一起使用?

我更喜欢使用FluentAPI配置而不是DataAnnotation,因为我想将模型与数据访问分开。我在MVC中尝试过,FluentAPI不适用于客户端验证。简而言之,是否有一种简单的方法可以像DataAnnotation那样使FluentAPI与客户端验证一起工作? 最佳答案 没有。FluentAPI只是映射-正确。数据注释既是映射又是验证——错误。数据注释是EF代码优先的最糟糕的功能之一,因为当以这种方式使用时,它们将持久性与表示和验证逻辑结合在一起。建议:不要使用EF实体进行表示。使用带有数据注释的特殊View模型,让您的Co

c# - 如何告诉 Fluent NHibernate 不要映射类属性

我有一个在fluentnhibernate中映射的类,但我希望映射忽略其中一个类属性。使用下面的类和映射我得到这个错误:以下类型不能用作代理:iMasterengine.Data.Model.Calendar:get_HasEvents方法应该是虚拟的//myclasspublicclassCalendar:IEntity{publicvirtualintId{get;privateset;}publicvirtualstringName{get;set;}publicvirtualstringSiteId{get;set;}publicvirtualIListEvents{get;s