C# 如何将GeneratedBy.Native设置为CompositeId Fluent NHibernate

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

我正在映射一个photo类,它可以有很多照片,所以我决定创建另一个类来控制这些照片

所以我有两个主键(PhotoCode,fkCode),其中一个是外键

   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有一个自然化的特性,这可能对您很方便。