Je reçois l'erreur suivante dans mon application MVC2 en utilisant Linq to SQL (je suis nouveau dans les deux). Je suis connecté à un serveur SQL réel pas étrange mdf:La valeur null ne peut pas être affectée à un membre avec le type System.Int64 qui est un type de valeur non nullable
System.InvalidOperationException The null value cannot be assigned to a member with type System.Int64 which is a non-nullable value type
Ma table SQL a une colonne appelée MessageID. Il est de type BigInt et dispose d'une clé primaire, NOT NULL et une identité 1 1, aucun défaut
Dans mon concepteur dbml il a la déclaration suivante pour ce champ:
[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();
}
}
}
Il continue à me dire que nulle ne peut pas être assigné - je ne passe pas par null! C'est long - ça ne peut même pas être nul!
Est-ce que je fais quelque chose de stupide? Je ne trouve pas de solution nulle part!
J'ai fait ce travail en changeant le type de cette propriété à Nullable<long>
mais sûrement cela ne peut pas être vrai?
Mise à jour: J'utilise InsertOnSubmit. Code simplifié:
public ActionResult Create(Message message)
{
if (ModelState.IsValid)
{
var db = new MessagingDataContext();
db.Messages.InsertOnSubmit(message);
db.SubmitChanges(); //line 93 (where it breaks)
}
}
casse sur SubmitChanges() avec l'erreur en haut de cette question.
Update2: Trace de la pile:
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
Update3: Personne ne sait et je n'ai pas assez d'influence pour offrir une prime! Donc continué sur mon ASP.NET blog. S'il vous plaît aider!
Essayez-vous d'utiliser la méthode InsertOnSubmit et cela entraîne-t-il cette exception? – Raja
pouvez-vous afficher le code qui provoque l'erreur? – Geoff
merci. J'ai mis à jour ma question – BritishDeveloper