내가 SQL이 SimpleMembership를 사용하여 작업과 MVC4 사이트를 얻으려고하지만 사용자 레코드를 만들 때마다 나는 오류가 계속 : 나에게 그래서SimpleMembership 제공자가 할당되지 ID의
[SqlException (0x80131904): Cannot insert the value NULL into column 'Id', table 'NFBC.dbo.User'; column does not allow nulls. INSERT fails.
The statement has been terminated.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1753346
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5295154
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +242
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1682
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +269
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1325
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +175
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +205
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160
WebMatrix.Data.Database.Execute(String commandText, Object[] args) +116
WebMatrix.WebData.DatabaseWrapper.Execute(String commandText, Object[] parameters) +55
WebMatrix.WebData.SimpleMembershipProvider.CreateUserRow(IDatabase db, String userName, IDictionary`2 values) +1074
WebMatrix.WebData.SimpleMembershipProvider.CreateUserAndAccount(String userName, String password, Boolean requireConfirmation, IDictionary`2 values) +102
WebMatrix.WebData.WebSecurity.CreateUserAndAccount(String userName, String password, Object propertyValues, Boolean requireConfirmationToken) +127
NFBC.Controllers.AccountController.Register(RegisterModel model) in e:\PROJECTS\DEVELOPMENT\00-Current\NFBC\NFBC\Controllers\AccountController.cs:74
을이 그것을 시도하고 있다고 내 사용자 테이블에 행을 삽입하지만 테이블의 기본 키인 "Id"속성을 설정하지 않았습니다. 이 ID는 공급자가 필요로하는 int 열입니다. 코드가 실행되는 방법은 다음과 같습니다.
WebSecurity.InitializeDatabaseConnection("NFBCEntitiesRaw", "User", "Id", "Email1", autoCreateTables: true);
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
ID는 int 기본 키 열이고 Id는 사용자 이름 열, nvarchar (255)입니다.
그리고 데이터베이스에 연결 문자열 : 나는 WebSecurity.CreateUserAndAccount, SimpleMembershipProvider.CreateUserAndAccount 및 SimpleMembershipProvider.CreateUserRow의 소스 코드를 검토 한
<add name="NFBCEntitiesRaw" connectionString="data source=localhost;initial catalog=NFBC;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework" providerName="System.Data.SqlClient" />
, 그 방법 중 하나에서 어떤 지점에서 수행 소스 코드는 User 레코드에 ID를 할당하여 예외가 발생하는 이유를 확인합니다. 그러나이 메서드는 ID를 지정할 수 없으며이 샘플이 SQLExpress에 대해 실행 중일 때 ID를 올바르게 할당하는 것처럼 보였습니다. 그래서 여기에서 내가 잘못하고 있는지 확실하지 않습니다.
감사합니다.
어쩌면 내가 데이터베이스를 자동으로 값을 증가시키면서 해당 열을 지정하도록되어 있다고 생각되지만 어쨌든 그것을 지정하는 문서에서는 아무 것도 찾을 수 없다. 해결책? –
SQL Server 인스턴스에 연결되어 있습니까? –
예, 전체 SQL Server 인스턴스입니다. ID 기능을 사용해야한다고 생각했습니다. –