【发布时间】:2013-06-28 22:26:31
【问题描述】:
当我运行以下代码时,我得到一个 NullReferenceException 说对象引用未设置为对象的实例。我已经使用不太复杂但格式相同的对象成功插入了 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});
}
}
}
我首先尝试使用更简单的方法,只传入 fogbugzCase 而不是匿名对象,但导致 CategoryId 出现不同的异常。
有人知道我错过了什么吗?
【问题讨论】:
-
放置断点并检查所有对象。如果我不得不猜测,根据您对 CategoryId 的说法,
fogbugzCase.Category可能为空。但检查一切。如果你访问一个空引用的属性,你会得到一个NullReferenceException。 -
@zimdanen thx,有些东西是空的——现在只是想办法检查一下。
-
NullReferenceException的几乎所有情况都是相同的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。
标签: c# sql-server dapper