2010-06-03 2 views
6

"ID"필드가 GUID 필드 인 Users 테이블이 있습니다.수동으로 ID 설정

ASPNET을 사용하여 사용자 계정을 만들고 GUID를 다시 가져옵니다. 해당 GUID를 주 ID로 사용하여 테이블에 연결된 레코드를 만들려고합니다.

내가 실행중인 문제는 수동으로 Users.ID를 설정할 때 NHibernate가 삽입이 아닌 업데이트를 시도한다는 것입니다. "예상치 못한 줄 수 : 0, 예상 : 1"로 폭발하기 전에 NHibernate Profiler에서 이것을 봅니다.

테이블 사용자에 대한 나의 UsersMap은 다음과 같습니다

public class UsersMap : ClassMap<Users> 
{ 
    public UsersMap() 
    { 
     Id(x => x.ID, "ID"); //GUID 

     Map(x => x.Name, "Name"); //string 
     Map(x => x.PhoneNumber, "PhoneNumber"); //string 
     Map(x => x.FaxNumber, "FaxNumber"); //string 
     Map(x => x.EmailAddress, "EmailAddress"); //string 

     HasMany<UsersAddressBook>(x => x.usersAddressBook).KeyColumn("ID"); 
    } 
} 

어떤 아이디어? 미리 감사드립니다.

답변

16

ID가 으로 지정되고으로 지정되어야합니다.

Id(x => x.ID) 
    .GeneratedBy.Assigned(); 

이렇게하면 NHibernate가 업데이트를 수행하지 않고도 값을 지정할 수 있습니다. 내가 사용 제임스의 대답에 추가 된 값으로

+0

이가 나타납니다 0L입니다 최선의 방법이 되십시오. 그것은 또한 완벽하게 작동합니다. 도움 주셔서 감사합니다. –

1

ISession.Save에는 식별자를 지정할 수있는 오버로드가 있습니다. 그것을 사용 해보고 id 속성을 수동으로 설정하지 마십시오.

0

: 내 이드 long을 사용하기 때문에 DEFAULT_VALUE 귀하의 ID 유형의 디폴트 값입니다

Id(x => x.ID) 
    .GeneratedBy.Assigned() 
    .UnsavedValue(default_value); 

주 내에서 같은

관련 문제