我是流利NHibernate的新手。现在我面临一个映射复合键的问题。 任何人都可以指出URL或样品吗?在流利NHibernate中映射复合键
回答
有一个CompositeId
方法。
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
CompositeId()
.KeyProperty(x => x.Something)
.KeyReference(x => x.SomethingElse);
}
}
请注意,在NHibernate的新版本中,UseCompositeId替换为CompositeId,而WithKeyProperty只是KeyProperty – 2010-10-28 17:20:01
@Rob Walker:同时WithReferenceProperty已成为KeyReference – Mulki 2011-02-18 07:48:55
,如果这是你的第一类
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
UseCompositeId()
.WithKeyProperty(x => x.Something)
.WithReferenceProperty(x => x.SomethingElse);
}
}
这里是第二个与实体
参考public class SecondEntityMap : ClassMap<SecondEntity>
{
public SecondEntityMap()
{
Id(x => x.Id);
....
References<Entity>(x => x.EntityProperty)
.WithColumns("Something", "SomethingElse")
.LazyLoad()
.Cascade.None()
.NotFound.Ignore()
.FetchType.Join();
}
}
可能有必要与复合标识,映射实体的实体到具有由许多列组成的复合主键的表。组成这个主键的列通常是另一个表的外键。
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("User");
Id(x => x.Id).Column("ID");
CompositeId()
.KeyProperty(x => x.Id, "ID")
.KeyReference(x => x.User, "USER_ID");
Map(x => x.Name).Column("NAME");
References(x => x.Company).Column("COMPANY_ID").ForeignKey("ID");
}
}
更多参考: http://www.codeproject.com/Tips/419780/NHibernate-mappings-for-Composite-Keys-with-associ
另外一点需要注意的是,你必须重写Equals和GetHashCode方法使用CompositeId的实体。鉴于接受的答案映射文件,你的实体看起来像这样。
public class Entity
{
public virtual int Something {get; set;}
public virtual AnotherEntity SomethingElse {get; set;}
public override bool Equals(object obj)
{
var other = obj as Entity;
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.SomethingElse == SomethingElse && other.Something == Something;
}
public override int GetHashCode()
{
unchecked
{
return (SomethingElse.GetHashCode()*397)^Something;
}
}
}
- 1. 流利Nhibernate复合键映射错误
- 2. 流利的NHibernate映射 - 复合键
- 3. nhibernate流利的映射复合ID
- 4. 流利Nhibernate映射
- 5. 流利Nhibernate映射
- 6. 流利的NHibernate映射单列到复合键
- 7. 流利Nhibernate与复合主/外键的实体映射
- 8. 如何将复合主键映射到外国流利的nhibernate?
- 9. NHibernate /流利NHibernate映射
- 10. 复合键流利nhibernate
- 11. 流利NHibernate的外键映射
- 12. Fluent Nhibernate复合键映射
- 13. 流利NHibernate的聚合对象映射
- 14. 流利的NHibernate混合映射属性
- 15. 流利Nhibernate映射hasMany
- 16. 流利NHibernate映射参考
- 17. 流利的NHibernate映射
- 18. 流利Nhibernate枚举映射
- 19. 流利的nHibernate映射
- 20. 流利的NHibernate映射
- 21. (流利)与CompositeId NHibernate映射
- 22. 流利NHibernate自动映射
- 23. 流利/ nhibernate映射问题
- 24. 流利的nhibernate映射
- 25. 流利,NHibernate的映射
- 26. 流利NHibernate单向映射
- 27. 流利NHibernate和HasMany映射
- 28. 流利的映射与自动映射与流利的NHibernate混合?
- 29. 流利的NHibernate流利的映射对象和对象集合
- 30. NullReferenceException映射与流利NHibernate自动映射枚举的集合
可以在这里 http://devlicio.us/blogs/derik_whittaker/archive/2009/01/16/using-fluentnhibernate-to-map-composite-keys-for-a-table找到更详细的例子.aspx – 2009-01-28 19:44:57