我是流利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 /流利NHibernate映射
- 9. 複合鍵流利nhibernate
- 10. 流利的NHibernate混合映射屬性
- 11. 流利的nHibernate映射
- 12. 流利,NHibernate的映射
- 13. (流利)與CompositeId NHibernate映射
- 14. 流利的NHibernate映射
- 15. 流利NHibernate單向映射
- 16. 流利Nhibernate映射hasMany
- 17. 流利/ nhibernate映射問題
- 18. 流利的nhibernate映射
- 19. 流利NHibernate映射參考
- 20. 流利的映射與自動映射與流利的NHibernate混合?
- 21. 流利的NHibernate:混合自動映射和手動映射
- 22. NullReferenceException映射與流利NHibernate自動映射枚舉的集合
- 23. 重複的參考鍵 - 流利的NHibernate自動映射
- 24. NHibernate /流利NHibernate的動態列映射
- 25. 流利NHibernate的 - HasManyToMany NHibernate.MappingException:重複列映射的集合
- 26. 流利的NHibernate複合材料到映射類
- 27. 流利的NHibernate反射映射
- 28. 流利的nhibernate複合類映射導致更新和主鍵問題
- 29. 流利的NHibernate映射問題
- 30. 流利的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