NHibernate Envers - 使用Guid作为Id而不是Int

时间:2015-01-28 16:12:56

标签: c# nhibernate nhibernate-envers

我在NHibernate.Envers看到的所有示例都使用整数作为对象ID。我想用Guid代替。这可能吗?

[Audited]
public class Person
{
    public virtual Guid Id { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String LastName { get; set; }
    public virtual int Age { get; set; }
    public virtual Address.Address Address { get; set; }
}

我问,因为我在尝试保存REV数据时遇到异常:

[Sql String]: INSERT INTO REVINFO (REVTSTMP) VALUES (?); select SCOPE_IDENTITY()

{"Cannot insert the value NULL into column 'REV', table 'Auditing.dbo.REVINFO'; 
  column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."}

我的修订数据对象的Id为0。

1 个答案:

答案 0 :(得分:1)

是的,你的entites几乎可以拥有任何id类型(NHibernate Core支持)。修订实体必须有一个数字。

关于您的例外......很可能您的修订实体和/或其映射存在问题。阅读此处的文档http://envers.bitbucket.org/#revisionlog