2015-01-28 6 views
0

NHibernate.Envers에 대한 모든 예제는 객체 ID로 정수를 사용합니다. 대신 Guid을 사용하고 싶습니다. 이것이 가능한가? REV 데이터를 저장하려고 할 때 나는 예외를보고하고 있기 때문에NHibernate Envers - GU 대신에 ID를 사용하십시오.

[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; } 
} 

나는 물어 오전 :

[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."} 

내 개정 데이터 객체가 0

답변

1

의 ID가를 예, entites은 수 거의 모든 id 타입 (NHibernate Core가 지원한다)을 가지고있다. 하지만 수정 엔터티에는 숫자가 있어야합니다.

예외에 대해 ... 대부분 수정 본 엔티티 및/또는 매핑에 문제가 있습니다. 여기에있는 문서, http://envers.bitbucket.org/#revisionlog을 읽으십시오.

+0

감사합니다. Roger에게 감사드립니다. 어제 작동시킬 수있었습니다. 그래서'REVINFO'에'REV'를'Guid'로 만드는 방법은 없습니다. 결국에는 'int'나 'bigint'를 사용하는 것에 대한 우려가 있습니다. – gwin003

+0

Envers는 "revision id greater than ..", "revision id between .."와 같은 많은 내부 쿼리에이 필드를 사용합니다. 예를 들어 관계를 읽을 때. – Roger

+0

... 아니, 나는 "해결할 수있다"라고 생각하지 않는다. 간단히 말해서, 각 개정판에는 "비교 가능"한 고유 한 값이 있어야합니다. – Roger