5

이 질문에 대한 대답을 찾으려면 잠시 시간을내어주었습니다.코드로 NHibernate 매핑 사용 : IDENTITY_INSERT가 OFF로 설정된 경우 'DietUser'테이블의 ID 열에 명시 적 값을 삽입 할 수 없습니다.


SQL Server 코드로 NHibernate의 새로운 매핑을 사용할 때 엔티티를 저장할 수 없습니다. System.Data.SqlClient.SqlException는 다음과 같은 메시지가 발생합니다 엔티티 (마이너스 테이블 이름)을 저장할 때 : IDENTITY_INSERT가 OFF로 설정되어있을 때

은 "테이블 'DietUser'의 ID 열에 명시 적 값을 삽입 할 수 없습니다 . "

내 표는 & 매핑은 다음과 같이 식별 ID 및 엔티티를 사용

public class User 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual string Username { get; set; } 
    public virtual string Password { get; set; } 
    public virtual short DailyPoints { get; set; } 
} 

public class UserMapping : ClassMapping<User> 
{ 
    public UserMapping() 
    { 
     Id(x => x.Id); 
     Property(x => x.Name); 
     Property(x => x.Username); 
     Property(x => x.Password); 
     Property(x => x.DailyPoints); 
    } 
} 

내가 XML 매핑을 사용하여이지도를 줄 방법을 알고하지만 난 내장 된 매핑하여 사용하고자하는 가능한 경우 코드를 작성하십시오.

답변

10

포럼에서 주위를 파고 들자 운이 좋았고이를 매핑하는 방법을 찾았습니다. example Fabio provides은 ID 등의 GUID를 사용하려는 경우 유용하지만 신원 ID를 사용하려는 경우 (다른 사용자도 함께 표시) 발전기를 지정해야합니다 용도. 식별 ID의

public class UserMapping : ClassMapping<User> 
{ 
    public UserMapping() 
    { 
     Id(x => x.Id, map => map.Generator(Generators.Identity)); 
     Property(x => x.Name); 
     Property(x => x.Username); 
     Property(x => x.Password); 
     Property(x => x.DailyPoints); 
    } 
} 
+0

ID 열로 GUID를 사용하고 있습니까? –

+0

아니요, 대부분의 SQL Server 테이블에 표시되는 표준 int ID 열입니다. – bressain

0

엔티티를 지속하기 전에 값을 Id 속성에 할당하려고합니까? 변경 사항을 데이터베이스에 유지하려고하는 코드 조각을 추가 할 수 있습니까?

NHibernate를 배우기 시작하면서 나는 시작 예제를 접하면서 작은 데모를 만들었습니다. 여기있어. Hope 도움이됩니다.

+0

나는 그렇지 않았습니다. 그것은 나를 괴롭혔습니다. 이름, 사용자 이름, 암호 및 DailyPoints를 설정하는 중이었습니다. – bressain

1

말하기를, 데이타베이스에 의해 생성이 피 묻은 ID를 얻기 위해 추가 요청이 필요하기 때문에 당신이 generator=identity, NHibernate 일괄 삽입을 수행 할 수 없을 것입니다 설정 한 경우 : 여기에 작동 내 업데이트 된지도입니다.

관련 문제