功能NHibernate在表中没有标识列(Fluent nHibernate no identity

2019-09-24 02:36发布

如何用流利的NHibernate的映射不具有标识列的表指定?

我想是这样的:

public sealed class CustomerNewMap : ClassMap<CustomerNew>, IMap
{
    public CustomerNewMap()
    {
        WithTable("customers_NEW");
        Not.LazyLoad();
        Not.Id(); // this is invalid...
        Map(x => x.Username);
        Map(x => x.Company);
    }
}

我的意思是(没有太大的在数据库中定义)在数据库中没有定义主键。

Answer 1:

我找到了答案是:

  public CustomerNewMap()
  {
        WithTable("customers_NEW");
        Not.LazyLoad();
        Id(x => x.Username).GeneratedBy.Assigned();
        Map(x => x.Company);
  }


Answer 2:

这并没有直接回答这个问题..但它回答了这个问题,在这里接受的答案的评论。

我们有一个SQL视图在我们莱杰同样的问题。 问题是,NHibernate的会很乐意重复行时Id属性不是唯一的。 在我们的例子。我们有这样的有总帐条目CustomerAccountId设置为Id ..这不是视图中是唯一的。 要解决这个问题..我绘制了基于什么我能找到的做出行唯一一个CompositeId。 在我们的例子中,它是一个组合CustomerAccountIdWeekEnding

CompositeId()
    .KeyProperty(x => x.CustomerAccountId)
    .KeyProperty(x => x.WeekEnding);

这是足有NHibernate的不重复的映射。



Answer 3:

我发现我已经在类似的情况下,明确设定列名。 就像是

  Id(x => x.Username).Column("Username").GeneratedBy.Assigned();


文章来源: Fluent nHibernate no identity column in table