Tag: fluent nhibernate

流畅的NHibernate多列有多列不插入

我正在努力与流利的nhibernate从Fluent Nhibernate多对多映射与额外的列 我复制了映射并编写了我能做的最小程序……但是它不会保存……有人能提供一些见解吗? public class Product { public int Id { get; set; } public string Name { get; set; } public IList Inventory { get; set; } public Product() { Inventory = new List(); } } public class Warehouse { public int Id { get; set; } public string Name { get; set; } […]

流利的Nhibernate HasMany映射问题

我是Fluent和NHibernate的新手,我不知道如何映射我数据库中存在的这种特定关系。 我在下面的ER图中概述了我的表结构。 以下是我目前的C#实体类: public class GroupHeader { public virtual Guid Id { get; private set;} public virtual string Name { get; set; } public virtual string Description { get; set; } public virtual IList Rights { get; set; } public virtual IList GroupRights { get; set; } public GroupHeader() { GroupRights = new List(); Rights […]

如何更改分组List 以列出类型?

这是我的代码; public List GetFoldersWithIndexedDocuments() { //TODO – I can’t find right query. We need folders with documents but only documents which be Indexed using (ISession session = DatabaseProvider.SessionFactory.OpenSession()) { List dokumanList = session.QueryOver() .Where(x => x.IndexlenmeTarihi != null) .List().ToList(); var list = dokumanList.GroupBy(x => x.Klasor.Aciklama); List folders = list as List; ////Transforming SbtKlasorModel to SbtKlasorViewModel […]

将nHibernate查询序列化为JSON

在深入研究Fluent nHibernate时,我发现了使用它的潜在破坏者…… 给出以下POCO代码。 public class Customer { public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual Details Details { get; set; } } public class Details { public virtual int Id { get; set; } public virtual IList Orders { get; set; } } public class […]

Fluent Nhibernate – 如何指定表名

我刚开始学习Nhibernate和Fluent Nhibernate。 我想在创建映射类时指定表名。 应用程序中的实体名称为“CustomerOrders”,但在oracle数据库中,表名为“CUSTOMER_ORDERS”。 我从谷歌搜索了解到我可以使用“WithTable”来指定数据库表名。 我不知道如何使用它和Vs2008没有找到方法的地方。 谢谢

IHttpModule和控制台应用程序的流畅NHibernate模式

我目前在存储库模式中使用Fluent NHibernate(+ LINQ)的C#MVC 2 Web应用程序,并使用Ninject来处理MVC控制器在存储库中传递的构造函数要求。 我的Fluent NHibernate代码目前已连接到IHttpModule,因此可以使用Web请求打开和关闭会话。 这很有效,直到我尝试将我的域模型挂钩到控制台应用程序。 首先,我决定将我的数据库逻辑移动到我的域模型中。 我猜这是不好的行为,但我在这里寻求代码设计方面的帮助,所以请随时提出建议。 我想这样做是因为我想在这个域模型上编写一个控制台app + web app,而不关心数据的存储位置和方式。 也许我应该有一个单独的“基础设施”项目,它使用域模型来执行特定的实现? 回到问题…我遇到了一个问题,似乎Fluent NHibernate的GetCurrentSession()假设你正在使用网络 – 它崩溃了,我得到一些提到WebSession的NH代码的追溯。 为了便于参考,代码如下: https : //github.com/cthielen/RightsManagement 。 我为不太具体而道歉; 我正在寻找代码设计建议,以最好地处理FNH + Linq的存储库模式,该模式适用于Web和控制台应用程序 – 并单独询问我的数据库连接(即NH逻辑)是否应该在域项目中或不。

如何在流畅的nHibernate中指定Columntype?

我有一个CaptionItem类 public class CaptionItem { public virtual int SystemId { get; set; } public virtual int Version { get; set; } protected internal virtual IDictionary CaptionValues {get; private set;} } 我正在使用以下代码进行nHibernate映射 Id(x => x.SystemId); Version(x => x.Version); Cache.ReadWrite().IncludeAll(); HasMany(x => x.CaptionValues) .KeyColumn(“CaptionItem_Id”) .AsMap(idx => idx.Column(“CaptionSet_Name”), elem => elem.Column(“Text”)) .Not.LazyLoad() .Cascade.Delete() .Table(“CaptionValue”) .Cache.ReadWrite().IncludeAll(); 所以在数据库中创建了两个表。 一个CaptionValue和其他CaptionItem 。 […]

流畅的NHibernateexception在集合之间移动对象

将一个对象从一个集合移动到另一个集合时,当cascade设置为all-delete-orphan时,我得到以下exception: 已删除的对象将通过级联重新保存(从关联中删除已删除的对象) 我认为当你使用all-delete-orphan时,nhibernate不会在另一个集合中引用它时删除它。 任何人都可以确认,当你有像文件夹这样的对象包含文件夹或文件并将文件从一个文件夹移动到另一个文件夹时,你不应该得到这个例外吗? 我在vs2010中制作了一个示例项目来演示这种行为。 任何人都可以说我的映射是正确的还是nhibernate中有错误? FileMapping.cs public class FileMapping: ClassMap { public FileMapping() { Id(x => x.Id, “Id”).GeneratedBy.Native(“File_seq”); Map(x => x.Name, “Name”).Not.Nullable(); References(x => x.Folder).Not.Nullable().Column(“idFolder”); } } FolderMapping.cs public class FolderMapping: ClassMap { public FolderMapping() { Id(x => x.Id, “Id”).GeneratedBy.Native(“Folder_seq”); Map(x => x.Name, “Name”).Not.Nullable(); HasMany(x => x.Folders).Inverse().Cascade.AllDeleteOrphan().KeyColumn(“idParentFolder”); HasMany(x => x.Files).Inverse().Cascade.AllDeleteOrphan().KeyColumn(“idFolder”); References(x => x.ParentFolder).Nullable().Column(“idParentFolder”); } […]

在Fluent中使用时间类型Nhibernate生成exception“无法将类型’System.DateTime’的对象强制转换为’NHibernate.Type.TimeType’

我发现NHibernate有几个内置类型 ,它们不存在于C# ,但存在于某些SGBD中。 现在我有以下内容: public class TimeSlot : EntityBase { public virtual NHibernate.Type.TimeType FromTime { get; set; } public virtual NHibernate.Type.TimeType ToTime { get; set; } } public class TimeSlotMap : ClassMap { public TimeSlotMap() { Id(c => c.Id).GeneratedBy.Identity(); Map(c => c.FromTime); Map(c => c.ToTime); } } 在MSSQL中,此表看起来像附加图像 现在,当我尝试查询此表时,我遇到以下exception: 无法将类型为“System.DateTime”的对象强制转换为“NHibernate.Type.TimeType” 我做错了什么? Fluent NHibernate如何使用Time Date Type?

在Fluent NHibernate中处理与值类型的一对多关系

我正在努力将应用程序迁移到NHibernate,我正在使用Fluent NHibernate。 我遇到了一个将值类型集合映射到聚合根的问题。 我有一个PhoneNumber值类型,它具有一些属性 – Number , NumberType和Description 。 我的域中有许多对象都有电话号码集合。 在数据库(SQL 2008)中,这些值保存在不同的表中。 所以我可能有Customers和CustomerPhoneNumbers以及Vendors和VendorPhoneNumbers 。 电话号码表是相同的,除了将它们与父母相关联的外键。 问题是我想使用一个简单的PhoneNumber值类型,而不必创建具有将它们与其父类型相关联的属性的CustomerPhoneNumber和VendorPhoneNumber类型,我不知道如何在NHibernate中实现它。 这是可能的还是我需要更改我的域对象以更紧密地匹配底层数据库架构? 更新:更多信息 看起来我甚至无法将基本地图用于检索。 这是我所拥有的简化示例: public class CustomerMap : ClassMap { public CustomerMap() { Table(“Customers”); Id(x => x.Id); Map(x => x.Name); Component(x => x.Address); HasMany(x => x.PhoneNumbers) .KeyColumn(“CustomerId”) .Cascade.All() .Table(“CustomerPhoneNumbers”); } } public class PhoneNumberMap : ClassMap { public PhoneNumberMap() […]