Tag: fluent nhibernate mapping

NHibernate.AssertionFailure:null标识符

在我将计算机推入下周之前…… 我已经检查了所有关于此问题的其他问题,但他们都没有解决方案。 我已经剥离了这个代码,但它仍然没有工作。 保存对象时出现此错误:NHibernate.AssertionFailure:null标识符 这是我的映射文件: public class OrderMap : BaseMap { public SalesOrderMap() { Id(x => x.Id).Column(“OrderId”); } } 这是实体: public class Order { public virtual int Id { get; protected set; } } 这是我的测试代码: Order order = new Order(); ISession session = SessionFactory.GetCurrentSession(); session.SaveOrUpdate(order); <—-EXCEPTION ON THIS LINE session.Flush(); 然后爆炸……它打破了 [AssertionFailure: null identifier] NHibernate.Engine.EntityKey..ctor(Object […]

NHibernate流畅的HasMany映射插入NULL外键

我有一个有很多订单的实体公司。 我将这些映射为彼此: 公司 HasMany(x => x.Orders).KeyColumn(“CompanyID”).Cascade.All().Inverse(); 订购 References(x => x.Company).Column(“CompanyID”) 但是,当我为公司创建新订单并尝试保存它时,我收到一个SQL错误:“无法将值NULL插入列’CompanyID’,表’订单’;列不允许空值.INSERT失败。” (这是生成的SQL语句:INSERT INTO Order(Name,CompanyID)VALUES(?,?); select SCOPE_IDENTITY()]]) 这是一个逻辑错误,因为我确实将CompanyID设置为不可为空。 然而,反过来我预计CompanyID会被正确的ID填充,但是在我的生活中,我无法让它工作。 我尝试删除Inverse(行为根本没有改变),更改了级联,将引用设置为不可为空。 我甚至将列中的列作为Nullable来幽默NHibernate。 但是这给我留下了一个孤立的Order,因为它确实创建了Order记录但是将CompanyID留给了NULL。 这是我的测试代码,我做了新订单: Company test = RepositoryBase.GetById(1); test.Orders.Add(new Order(“test”)); RepositoryBase.SaveWithTransaction(test); 顺便说一句,更新都很顺利。 无论如何,我希望有人能在我的映射中看到我做错了什么。 提前致谢。

与Fluent Nhibernate建立一对多的关系

我和我的同事有点争吵,我似乎无法找到答案,但这是非常基本的东西。 在Fluent Nhibernate实体中建立一对多关系。 我们以Roles和用户为例。 可以将角色分配给多个用户,这样我的实体内容就像: public class User { [Required] public virtual string FirstName { get; set; } public virtual Role Role { get; set; } } 和角色 public class Role { [Required] public virtual string Name { get; set; } public virtual IList Users{ get; set; } public Role() { Users = new List(); […]

NHibernate映射与中间表的一对多关系

如何在没有中间class PostTag创建的情况下定义映射? 我有三张桌子 t_post(id…) t_tag(id, name) t_post_tag(id,post_id, tag_id) 我希望在Post类型中有一个带有Tags的集合: class Post { public virtual IEnumerable Tags{ get; set; } } public class Tag { } 映射: …

nhibernate 4.0中的双向关系

我有一个代码在NHibernate 3.1上完美运行,但是当它不能在NHibernate 4.0上运行时 所以,这就是阶级关系 public class Employee : BaseEntity { … public Department Dept { get; set; } } public class Department : BaseEntity { … public IList Employees { get; set; } } 对于映射,我们有这个 DepartmentMap : ClassMap { Table(“….”); HasMany(x => x.Employees).KeyColumn(“DeptId”).Not.KeyNullable(); } EmployeeMap : ClassMap { Reference(x => x.Dept).Column(“DeptId”); } 当我添加这样的员工时 var dept […]

NHibernate标准与不同的父负载所有孩子?

我有一个父子关系,我想只返回一个父母并加载所有孩子。 我正在使用标准,因为它是一个动态查询。 var messageQueueId = this.GetPropertyName(x => x.Id); var query = _sessionManager.Session.CreateCriteria(QUEUE_ALIAS); query.SetFirstResult(_pageOffset); query.SetMaxResults(_pageSize); query.Add(Restrictions.In(messageQueueId, _messageQueueIds)); query.List(); 这将返回父(MessageQueue),但不返回它的子(SearchMatches)。 当我尝试这样做时: var query = _sessionManager.Session .CreateCriteria(QUEUE_ALIAS) .CreateAlias(this.GetPropertyName(x => x.SearchMatches) , MATCH_ALIAS, JoinType.LeftOuterJoin); 然后我让孩子们装满了,但我也收到了重复的父母。 我理解为什么会这样。 但是我不明白如何让第一个场景自动加载SearchMatches? 以下是我的权利: public class MessageQueue : EntityBase { … public virtual IList SearchMatches { get; set; } … } public class SearchMatch : […]

NHibernate Prevent Lazy加载无与伦比的引用

我对NHibernate有一个很大的问题。 我有一个从Table1到Table2的引用,我希望NHibernate在表2中找不到相应的记录时,不要对Table2发出一个SELECT语句,我不知道,真的确实它确实不在那里。 我尝试将修饰符如.LazyLoad(Laziness.False)和.NotFound.Ignore()到我的引用中,但NHibernate在极端偏见中忽略了我的命令,发出了select并破坏了我的代码。

限制集合仅检索只读实体的最近条目

用户实体可以拥有数千个UserOperations。 有时我不想检索(对于只读实体)所有这些,但仅“最近10次或未完成”。 public class SimpleForm { public class User : EntityBase { // … private ISet _recentOperations = new HashedSet(); public virtual ISet RecentOperations { get { return _recentOperations; } set { _recentOperations = value; } } } } 那我怎么指定它呢? 我想我可以使用映射覆盖? 我知道我可以通过单独的查询来实现这一点但是可以通过实体映射完成吗? 另外我想知道是否有可能为非readonly实体做一些我可以修改操作的集合? UPDATE 我试着用 DateTime dateTime = (DateTime.UtcNow – TimeSpan.FromDays(15)); mapping.HasMany(x => x.RecentOperations) .Where(x […]

使用流畅的nhibernate映射实体oneToMany

问题似乎很简单但是我在尝试映射这些实体时遇到了很多麻烦。 我只是看不出我做错了什么。 你们能帮助我吗? 我有课堂Cliente : public class Cliente { public Cliente () { } public virtual int ClienteId { get; set; } public IList ListaMedidores { get; set; } public virtual string NumeroMedidor { get; set; } } 并且上课Medidor public class Medidor { public Medidor() { } public virtual string NumeroMedidor { get; set; } […]