2013-03-01 1 views
2

간단한 사용자 인터페이스로 사용자 테이블을 사용하여 데이터를 추가하려고합니다. - 여기에 샘플을 기반으로 http://blog.osbornm.com/2010/07/21/using-simplemembership-with-asp.net-webpages/ 나는이 모델로 테이블을 만들었습니다SimpleMembership CreateUserAndAccount 맞춤 사용자 테이블에 IDENTITY_INSERT 오류가 발생했습니다.

[Table("MyUsers")] 

공용 클래스 MyUsers

[Key] 
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
public int UserId { get; set; } 
public string UserName { get; set; } 
public string Email { get; set; } 
public string Gender { get; set; } 
public DateTime DOB { get; set; } 

나는 그것을 초기화 해요 :에

WebSecurity.InitializeDatabaseConnection("MyConnection", "MyUsers", "UserId", "UserName", autoCreateTables: true); 

과 등록 전화 :

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new MyUsers {DOB = DateTime.Now.AddYears(-31),Email = "[email protected]",Gender = "Male",UserName = model.UserName}); 

하지만 -이 오류가 발생합니다 : IDENTITY_INSERT가 OFF로 설정된 경우 'MyUsers'테이블의 ID 열에 대해 명시 적 값을 삽입 할 수 없습니다.

VS2010에서이 기능을 설정하는 방법을 모르겠지만이 오류가 발생하는 이유를 모르겠습니다.

감사합니다. 저는 MVC로 기존 asp.net 프로젝트를 옮길 수 있는지 테스트하려고합니다.

Thansk

답변

4

내 문제를 발견 - 그것은 CreateUserAndAccount 함께, 나는 키를 포함하여 테이블의 모든 필드와 일치하는 클래스를 사용했습니다. 이런 식으로해서는 안됩니다. 이 작동합니다 :

WebSecurity.CreateUserAndAccount(model.UserName, model.Password,new {Gender="Mal",DOB = DateTime.Now.AddYears(-1),Email="[email protected]" }); 

감사합니다.

0

수행 한 작업은 기본 사용자 테이블의 확장자로 작성되었습니다. 이 때문에 UserId이 자동 증가 열이 아니어야합니다. 외래 키로 기본 사용자 테이블의 실제 ID INSERT을 시도 할 것입니다.

+0

감사합니다. 그러나 이것을 제거하면 ID를 직접 설정해야합니까? 그런 다음 동일한 ID가 웹 페이지의 사용자가됩니다 .Membership? User 테이블을 쿼리하는 것 외에 새로운 ID를 얻는 좋은 방법이 있습니까? –

+0

@GuyV, 프레임 워크가 INSERT하려고하는 ID는 고유 한 사용자 ID입니다. 솔직히 다른 ID에 대한 이유가 없습니까? 이 ID는 중복되지 않으며 일대 다 테이블이 아닙니다. 그것은 일 대 일 테이블이 아닌가? 그리고 아닙니다. ID를 직접 설정해야합니다. 즉, 실패하는 이유입니다. 프레임 워크가 ID를 설정하려고합니다. –

+0

미안하지만, 나는 뭔가를 놓치고 있다고 생각합니다. 템플릿이 자동으로 생성하는 UserProfile 테이블을 살펴보면 증가가 있음을 알 수 있습니다. 나는이 테이블을 내 자신의 것으로 바꾸고 CreateUserAndAccount에 추가 매개 변수를 추가하려고했습니다. 그래서 만약 내가 올바르게 이해, 내 테이블에 사용자 ID를 삽입해야합니다. (또한 UserProfile 테이블에 genreted ann 테이블을 추가하려고하지만 동일한 문제가 발생했습니다.) BTW - mykey 테이블의 양식을 다시 작성하면 사용자 ID가 항상 0으로 설정되므로 두 번째 사용자를 삽입하지 못합니다. –