2013-06-28 33 views
1

我試圖插入一堆fogbugz案例到我自己的數據庫,但得到一個NotSupportedException:System.Uri類型的成員OutlineUri不能用作參數值。當用Dapper插入NotSupportedException

在傳遞之前創建args我能夠確保我沒有引用空對象(從this SO問題)。我可以看到,在引發異常時,fogbugzCase.OutlineUri有一個有效值。

任何想法?

下面的代碼(約地段壓痕道歉):

public void Foo(IEnumerable<FogbugzCase> cases) 
    { 
     using (SqlConnection conn = CreateConnection()) 
     { 
      TruncateWorkingTable(conn, "Cases"); 

      foreach (FogbugzCase fogbugzCase in cases) 
      { 
       int categoryId = fogbugzCase.Category.Id; 
       int? assigneeId = null; 
       if (fogbugzCase.PersonAssignedTo != null) 
        assigneeId = fogbugzCase.PersonAssignedTo.Id; 
       int? resolveeId = null; 
       if (fogbugzCase.PersonResolvedBy != null) 
        resolveeId = fogbugzCase.PersonResolvedBy.Id; 

       var args = new 
        { 
         BugId = fogbugzCase.BugId, 
         Title = fogbugzCase.Title, 
         ProjectId = fogbugzCase.Project.Id, 
         CategoryId = categoryId, 
         RootId = fogbugzCase.Root, 
         MilestoneId = fogbugzCase.Milestone.Id, 
         Priority = fogbugzCase.Priority, 
         StatusId = fogbugzCase.Status.Id, 
         EstimatedHours = fogbugzCase.EstimatedHours, 
         ElapsedHours = fogbugzCase.ElapsedHours, 
         PersonAssignedToId = assigneeId, 
         PersonResolvedById = resolveeId, 
         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 
        }; 
       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);", 
          args); 
      } 
     } 
    } 

回答

2

事實上,有開放的沒有內置的處理。只需使用你選擇的URI到字符串表示(有幾個和他們不同的行爲) - 例如:

... 
OutlineUri = fogbugzCase.OutlineUri.OriginalString 
... 

這是什麼,也許我們可以自動完成 - 而只是它從來沒有拿出作爲請求。

+0

太棒了,thx的幫助! –

相關問題