C# 如何将GeneratedBy.Native设置为CompositeId Fluent NHibernate
我正在映射一个photo类,它可以有很多照片,所以我决定创建另一个类来控制这些照片 所以我有两个主键(PhotoCode,fkCode),其中一个是外键C# 如何将GeneratedBy.Native设置为CompositeId Fluent NHibernate,c#,fluent-nhibernate,nhibernate-mapping,C#,Fluent Nhibernate,Nhibernate Mapping,我正在映射一个photo类,它可以有很多照片,所以我决定创建另一个类来控制这些照片 所以我有两个主键(PhotoCode,fkCode),其中一个是外键 public class Photo : EntityBase { public virtual long PhotoCode { get; set; } public virtual long fkCode { get; set; } public virtual byte[] P
public class Photo : EntityBase
{
public virtual long PhotoCode { get; set; }
public virtual long fkCode { get; set; }
public virtual byte[] Photo { get; set; }
public override bool Equals(object obj)
{
var other = obj as Photo;
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return PhotoCode == other.PhotoCode &&
fkCode == other.fkCode;
}
public override int GetHashCode()
{
unchecked
{
int hash = GetType().GetHashCode();
hash = (hash * 31) ^ PhotoCode.GetHashCode();
hash = (hash * 31) ^ fkCode.GetHashCode();
return hash;
}
}
}
所以我想为我的光电码设置一个发生器,在我的复合id上设置这个。
这是我在类映射上的构造函数
public MapActivityPhoto()
{
Table("Photo");
CompositeId()
.KeyProperty(c => c.PhotoCode, "PhotoCode")
.KeyProperty(c => c.fkCode, "fkCode");
Map(c => c.Photo).Column("Photos");
}
我知道如何在Id上设置,但如何在composite上设置
示例Id:
Id(i => i.Code).Column("Code").GeneratedBy.Native("GeneratorCode");
NHibernate不支持将compositeId的部分自动生成ootb,因为这有很多奇怪的边缘情况。我也强烈反对使用它。然而,NHibernate有一个自然化的特性,这可能对您很方便。