Tag: nhibernate

NHibernate在部署的Web应用程序上出现“安全”问题

我已经在服务器上部署了一个使用NHibernate的Web应用程序。 应用程序在我的本地开发机器上编译并运行良好,但是在新服务器上存在NHibernate的问题。 我收到以下错误: 说明:应用程序尝试执行安全策略不允许的操作。 要授予此应用程序所需的权限,请与系统管理员联系或在配置文件中更改应用程序的信任级别。 exception详细信息:System.Security.SecurityException:请求类型’System.Configuration.ConfigurationPermission,System.Configuration,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = tokenkeyhere’失败的权限。 它建议在配置文件中更改应用程序的“信任级别”。 我到底该怎么做? 这是我第一次部署NHibernate Web应用程序,所以我很茫然。

linq to nhibernate compareto不支持

我有linq到nhibernate查询: var listka = from i in FakturyZakupu.Queryable where String.Compare(i.REJESTRY.REJ_KOD,sbWartoscBetween1.ToString()) >= 0 && String.Compare(i.REJESTRY.REJ_KOD,sbWartoscBetween2.ToString()) <= 0 select i; lista = listka.ToList(); 它编译得非常好,但是如果我使用它,则抛出exception: NotSupportedException int32 CompareTo(System.String,System.String) 我怎样才能在两个值之间使用linq查询字符串值。 就像在SQL中一样:select * from table from a a和b之间的id?

两个不同的汇编版本“找到的汇编的清单定义与汇编参考不匹配”

我有一个项目,我正在努力,需要使用Mysql Connector for NHibernate,(Mysql.Data.dll)。 我还想在同一个项目中引用另一个项目(Migrator.NET)。 问题是即使Migrator.NET是使用特定版本= false的MySql.Data引用构建的,它仍然会尝试引用构建库的旧版MySql.Data而不是仅使用那里的版本..我得到标题中列出的例外: —-> System.IO.FileLoadException:无法加载文件或程序集’MySql.Data,Version = 1.0.10.1,Culture = neutral,PublicKeyToken = c5687fc88969c44d’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 我在主程序集中引用的版本是6.1.3.0。 如何让两个组件合作? 编辑: 对于那些指定程序集绑定重定向的人,我已经设置了这个: 我在另一个项目中引用了这个主程序集,但仍然遇到了同样的错误。 如果我的主程序集被复制到本地以便在另一个程序集中使用,它是否会使用app.config中的设置,或者这些信息是否必须包含在引用我的主程序集的每个应用程序或程序集中?

通过DI配置Envers RevisionListener

为了向我们的应用程序添加审计跟踪,我们决定使用NHibernate.Envers。 为了允许特定于应用程序的修订跟踪, DefaultRevisionEntity使用特定于用户的数据进行了扩展。 public virtual void NewRevision( object revisionEntity ) { var revisionData = revisionEntity as Revision; if( revisionData != null ) { // Set additional audit data. var identity = UserAccessor.CurrentIdentity; revisionData.UserId = identity.UserId; revisionData.EmployeeId = identity.EmployeeId; revisionData.UserName = identity.Name; } } Envers决定使用RevisionListener ,具体取决于您的类使用的RevisionEntity属性: [RevisionEntity( typeof( RevisionListener ) )] 我正在使用ServiceLocator模式将我的访问器注入RevisionListener 。 目前,这是我必须使用ServiceLocator并且真正想要摆脱它的唯一地方。 是否有另一种灵活的方式将我的UserAccessor注入RevisionEntity?

在NHibernate中通过鉴别器进行查询

我做了一些搜索,并没有发现任何东西。 是否可以创建一个Hibernate查询以基于鉴别器返回一组对象? 我有一个AbstractUser类,它由具体类UserTypeA和UserTypeB扩展。 我正在使用table-per-hierarchy模型在NHibernate中映射我的类,因此UserTypeA和UserTypeB都存储在具有不同鉴别器值的同一个表中。 这是我的鉴别器映射属性: 我的表中有一列包含用户类型的名称。 我想知道是否可以使用它运行NHibernate查询。 我试过这个: public IList FindByType(string typeName, Type type) { string query = “from ” + type.Name + ” k where k.Type = ” + typeName; return Session.CreateQuery(query).List(); } 但由于Type实际上并不是类的属性,只是表中的一列,这显然不起作用。 除非有一种方法可以将属性用作鉴别器,否则为此目的提供属性和鉴别器似乎是多余的?

方言/驱动程序 – 我执行的每个SELECT,添加(nolock)

我需要知道一种在我的系统中实现的方法,一个驱动程序或方言,每当我在Nhibernate中执行SELECT时,SELECT都会添加with(nolock)。 我需要在C#和NHibernate中,而不是直接在DB中! 希望你能理解! 谢谢 !

映射到Nhibernate中的Enum位标志

采取以下枚举标志 [Flags] enum Permssions { CanComment = 1, CanEdit = 2, CanDelete = 4, CanRemoveUsers = 8, All = CanComment | CanEdit | CanDelete | CanRemoveUsers } 在NHibernate中,我在使用之前映射到枚举: 我的问题是,如何使用NHibnerate将按位字段映射到Flag字段?

无法加载文件或程序集

我正在使用一个系统来使用带有NHibernate的SqlServerCe。 从我的驱动程序,如果我添加System.Data.SqlServerCe程序集作为参考,我可以创建和运行对数据库的查询就好了。 但是,当尝试使用NHibernate时,我得到以下exception: mscorlib.dll中出现“System.IO.FileNotFoundException”类型的第一次机会exception附加信息:无法加载文件或程序集“System.Data.SqlServerCe”或其依赖项之一。 该系统找不到指定的文件。 我已经跟踪了对Assembly.Load(“System.Data.SqlServerCe”)的调用的exception,这看起来应该可行。 System.Data.SqlServerCe程序集在GAC中(我也尝试将它作为本地引用添加到CopyLocal = true,无济于事),我可以使用其成员,所以为什么我不能显式加载它? 当我在Reflector中打开程序集时,它无法加载System.Transactions引用(我也尝试将其添加为本地引用,再次无效),因此加载该程序集可能是问题,而不是系统。 Data.SqlServerCe程序集。 这是个常见的问题吗? 可能是系统配置错误?

流畅的NHibernate生成和分配的ID列

我正在使用Fluent NHibernate来处理Web应用程序中的数据持久性。 我的问题…我有一个基类使用GeneratedBy()映射所有具有类型T的ID属性(几乎总是int或GUID)的实体.Identity() 在应用程序启动时,我有一个boot-strapper,它检查并validation所需的种子数据是否已填充。 我的问题是,填充的一些种子数据需要一个特定的ID。 (与枚举或系统用户对应的ID) 有没有办法强制NHibernate使用我指定的ID提交记录,而不是自动生成的ID? 之后对存储库的任何其他提交都可以自动生成。

你如何在代码中获得C#(VS 2008)中的解决方案目录?

这里有一个恼人的问题。 我有一个NHibernate / Forms应用程序,我正在通过SVN工作。 我做了一些自己的控件,但是当我拖放那些(或者查看我已经拖放过的一些表单编辑器)到我的其他控件上时,Visual Studio决定它需要执行我编写的一些代码,包括查找hibernate.cfg.xml的部分。 我不知道为什么会这样,但是(有时!)当我在表单加载期间执行代码或拖放它时将当前目录切换到C:\ program files \ vs 9.0 \ common7 \ ide,然后nhibernate抛出一个例外,它无法找到hibernate.cfg.xml,因为我在相对路径中搜索它。 现在,我不想硬编码hibernate.cfg.xml的位置,或者只是将hibernate.cfg.xml复制到ide目录(这将起作用)。 我想要一个获得解决方案目录的解决方案,而当前目录是common7 \ ide。 可以让某人在设计器中查看我的表单,然后在任意机器上的任意目录中进行新的检查。 不,我不打算在代码中加载控件。 我在控件中有如此多的控件,如果没有它,将所有内容排成一行都是一场噩梦。 我尝试了一个预构建事件,它创建了一个包含解决方案目录的文件,但当然如何从common7 \ ide中找到它? 由于svn,所有项目文件都需要位于解决方案目录中。 谢谢你的帮助,我已经花了几个小时摆弄这个徒劳。 更新:我将hibernate.cfg设置为嵌入式资源。 对于每个配置,我只需创建一个新的构建配置,调试,发布,XYZ。 在大多数情况下,我建议嵌入您依赖的任何文件来运行程序。 它使构建安装程序变得更加简单。