Linq to SQL을 사용하는 MVC2 앱에서 다음 오류가 발생합니다 (새로운 기능 임). 이상한 mdf가 아닌 실제 SQL 서버에 연결되었습니다.널 값을 사용할 수없는 값 유형 인 System.Int64 멤버에 null 값을 할당 할 수 없습니다.
System.InvalidOperationException The null value cannot be assigned to a member with type System.Int64 which is a non-nullable value type
My SQL 테이블에 MessageID라는 열이 있습니다. 그것은의 BIGINT 타입 및 기본 키, NULL NOT과 IDENTITY 1, no 기본값 내 DBML 디자이너에서
을 가지고는이 필드에 다음 선언이 있습니다
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MessageId", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public long MessageId
{
get
{
return this._MessageId;
}
set
{
if ((this._MessageId != value))
{
this.OnMessageIdChanging(value);
this.SendPropertyChanging();
this._MessageId = value;
this.SendPropertyChanged("MessageId");
this.OnMessageIdChanged();
}
}
}
그것은 계속 나에게 그 널 이야기를 할당 할 수 없습니다 - null을 통과하지 못합니다! 그것은 길다 - 그것은 심지어 null이 될 수 없다!
나는 바보 같은 짓을하고 있습니까? 어디서나 솔루션을 찾을 수 없습니다!
이 속성의 유형을 Nullable<long>
으로 변경하여이 작업을 만들었지 만, 틀림없이 이것이 맞을 수 있습니까?
업데이트 : InsertOnSubmit을 사용하고 있습니다. 간체 코드 :
public ActionResult Create(Message message)
{
if (ModelState.IsValid)
{
var db = new MessagingDataContext();
db.Messages.InsertOnSubmit(message);
db.SubmitChanges(); //line 93 (where it breaks)
}
}
이 질문의 맨 위에 오류가있는 SubmitChanges()가 있습니다.
갱신 2 : 스택 추적 :
at Read_Object(ObjectMaterializer`1)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicInsert(TrackedObject item)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.Insert(TrackedObject item)
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at Qanda.Controllers.MessagingController.Ask(Message message) in C:\Qanda\Qanda\Controllers\MessagingController.cs:line 93
갱신 3 : 아무도 알고 난 현상금을 제공 할 수있는 충분한 영향력을 가지고 있지 않습니다! 그래서 내 ASP.NET blog에 계속했다. 도와주세요!
InsertOnSubmit 메서드를 사용하려고하는데이 예외가 발생합니까? – Raja
오류의 원인이되는 코드를 표시 할 수 있습니까? 덕분에 – Geoff
. 내 질문을 업데이트했습니다 – BritishDeveloper