NHibernate:如何在没有主键的情况下映射ManyToOne?

时间:2018-08-08 15:57:07

标签: c# nhibernate nhibernate-mapping

我正在尝试使用ManyToOne()映射类
我将第一堂课定义为:

response.delimiters = ('%{', '}%')

和第二类:

public class InfoNH
{
    public virtual string RowId { get; set; }
    public virtual int Refcon { get; set; }
    public virtual IEnumerable<BrokerNH> Brokers { get; set; }
}

然后我尝试映射这两个类:

        public class BrokerNH
{
    public virtual int BrokerId { get; set; }
    public virtual string BrokerName { get; set; }
    public virtual InfoNH Infos { get; set; }
}

和BrokerNH一样:

public InfoMapping()
    {
        Table("Table");
        Id(x => x.RowId, c => c.Column("ROWID"));
        Property(x => x.REFCON, c => c.Column("REFCON"));

        Bag(x => x.Brokers, map =>
        {
            map.Inverse(true);
            map.Cascade(Cascade.All);
            map.Lazy(CollectionLazy.NoLazy);
            map.Key(x => x.Column("IDENT"));
            map.Fetch(CollectionFetchMode.Join);
            map.BatchSize(1000);
        },
         action => action.OneToMany());

    }

这个想法是InfoNH可能包含许多Broker,因此我尝试使用变量Refcon(这不是主键)将这两个表连接在一起。 ps:我使用ROWID是因为我的第一个表不包含主键。 但是,每次NHibernate尝试在 public BrokerMapping() { Table("TIERS"); Id(x => x.BrokerId, c => c.Column("IDENT")); Property(x => x.BrokerName, c => c.Column("NAME")); ManyToOne(x => x.TradeInfos, map => { map.PropertyRef("Refcon"); map.Column("IDENT"); map.Cascade(Cascade.All); }); } 上连接两个表时,这都不是我想要的。
预先感谢您的任何建议

0 个答案:

没有答案