Quando si esegue il codice seguente, viene visualizzata una NullReferenceException che indica che un riferimento a un oggetto non è impostato su un'istanza dell'oggetto. Ho inserito con successo dapper usando oggetti meno complessi ma dello stesso formato, quindi non sono sicuro di cosa sto facendo male.NullReferenceException quando si inserisce con Dapper
public void Foo(IEnumerable<FogbugzCase> cases)
{
// using a singleton for the SqlConnection
using (SqlConnection conn = CreateConnection())
{
foreach (FogbugzCase fogbugzCase in cases)
{
conn.Execute("INSERT INTO fogbugz.Cases(CaseId, Title, ProjectId, CategoryId, Root, MilestoneId, Priority, Status, EstimatedHours, ElapsedHours, AssignedTo, ResolvedBy, IsResolved, IsOpen, Opened, Resolved, Uri, ResolveUri, OutlineUri, SpecUri, ParentId, Backlog) VALUES(@BugId, @Title, @ProjectId, @CategoryId, @RootId, @MilestoneId, @Priority, @StatusId, @EstimatedHours, @ElapsedHours, @PersonAssignedToId, @PersonResolvedById, @IsResolved, @IsOpen, @Opened, @Resolved, @Uri, @ResolveUri, @OutlineUri, @Spec, @ParentId, @Backlog);", new {BugId = fogbugzCase.BugId, Title = fogbugzCase.Title, ProjectId = fogbugzCase.Project.Id, CategoryId = fogbugzCase.Category.Id, RootId = fogbugzCase.Root, MilestoneId = fogbugzCase.Milestone.Id, Priority = fogbugzCase.Priority, StatusId = fogbugzCase.Status.Id, EstimatedHours = fogbugzCase.EstimatedHours, ElapsedHours = fogbugzCase.ElapsedHours, PersonAssignedToId = fogbugzCase.PersonAssignedTo.Id, PersonResolvedById = fogbugzCase.PersonResolvedBy.Id, IsResolved = fogbugzCase.IsResolved, IsOpen = fogbugzCase.IsOpen, Opened = fogbugzCase.Opened, Resolved = fogbugzCase.Resolved, Uri = fogbugzCase.Uri, OutlineUri = fogbugzCase.OutlineUri, Spec = fogbugzCase.Spec, ParentId = fogbugzCase.ParentId, Backlog = fogbugzCase.Backlog});
}
}
}
primo luogo ho provato a fare il modo più semplice di solo di passaggio in fogbugzCase
anziché l'oggetto anonimo ma ha determinato un'eccezione diverso CategoryId.
Qualcuno vede cosa mi manca?
Inserisci un punto di interruzione e controlla tutti gli oggetti. Se dovessi indovinare, basandomi su ciò che hai detto su CategoryId, 'fogbugzCase.Category' potrebbe essere nullo. Ma controlla tutto. Se si accede a una proprietà di riferimento null, si otterrà una 'NullReferenceException'. – zimdanen
@zimdanen thx, c'era qualcosa di nullo - solo cercando di trovare il modo di controllarlo adesso. –
Quasi tutti i casi di 'NullReferenceException' sono uguali. Per alcuni suggerimenti, vedere "[Cos'è una NullReferenceException in .NET?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net)". –