2010-03-10 60 views
0

一次,SimpleRepository不支持枚舉。如果您有相關的枚舉它不會正確地堅持一個POCO對象,你必須有你會使用如後盾變量:Subsonic Simplerepository GetPaged <T>枚舉問題

public enum Color 
    { 
     Red = 1, 
     Blue = 2 
    } 

    public class Car 
    { 
     [SubSonicIgnore] 
     public Color CarColor 
     { 
      get 
      { 
       return (Color)ColorMe; 
      } 
      set 
      { 
       ColorMe= (int)value; 
      } 
     } 
     public int ColorMe; 
    } 

表格中的名稱將不得不被命名的變量,而不是枚舉。

此問題已通過github上的最新補丁得到解決。

然而,欲以GetPaged

var results = Db.GetPaged<Car>(1, 10); 

時,我仍然看到問題拋出一個異常:

**Tests.Models.NewTests.SimplePagedSearch threw exception: System.InvalidCastException: Invalid cast from 'System.Int32' to 'Models.Car.Color** 

此異常發生在

SubSonic.Extensions 95線.Objects.ChangeTypeTo(對象值,類型轉換類型)在C:\ TEMP \ subsonic \ SubSonic.Core \ Extensions \ Objects.cs中:第95行

回答

0

我修補Subsonic.Extensions.Objects.ChangeTypeTo線95到包括這一條款:

else if (conversionType.IsEnum) 
     { 
      return Enum.ToObject(conversionType, value);     
     } 

所以從INT32直接投給枚舉不再拋出和異常