2017-06-06 56 views
2

如果BO被標記爲具有[key]的鍵,爲什麼精靈會通過錯誤?Dapper例外 - 獲取<T>僅支持具有[Key]屬性的en實體,但[key]被定義爲

[Table("tblWebReadyToWorkQualifications")] 
public class TeacherQualificationBO 
{ 
    [Key] 
    public int TeacherID { get; set; } 

    public string ReadyToWorkGuid { get; set; } 

    public int QualificationID { get; set; } 

} 

電話短小精悍拋出異常

 public IEnumerable<TeacherQualificationBO> GetTeacherQualifications(int TeacherID) 
     { 
     using (var connection = GetOpenConnection()) 
     { 
      return connection.Get<IEnumerable<TeacherQualificationBO>>(TeacherID); 
     } 
     } 

表tblWebReadyToWorkQualifications對TeacherID主鍵。

錯誤: 在Dapper.Contrib.Extensions.SqlMapperExtensions.Get [T](的IDbConnection連接,對象ID,IDbTransaction交易,Nullable`1的CommandTimeout)在d:\ EGNA PROJEKT \ hardy中雙點淨\小巧玲瓏。 Contrib \ SqlMapperExtensions.cs:line 128 \ r \ n

+1

拋出的錯誤是什麼?堆棧跟蹤? – Tewr

+1

應該注意的是,'Get()'是爲了獲得單個記錄,而不是集合。 'IEnumerable '不被認爲是有效的。您可能必須爲此編寫自己的查詢。 – willaien

回答

1

錯誤消息可能試圖告訴您,通用類型IEnumerable<TeacherQualificationBO>沒有[Key]屬性,這是真的。只有TeacherQualificationBO這樣做。

變化

return connection.Get<IEnumerable<TeacherQualificationBO>>(TeacherID); 

return connection.Get<TeacherQualificationBO>(TeacherID); 

您還需要你的函數的返回類型更改爲TeacherQualificationBO反映這一點。您聲明TeacherID是主鍵(因此是唯一的),因此TeacherID只會對應於單個記錄。因此,不返回集合是有意義的。

相關問題