Subsonic Simplerepository GetPaged <t>枚举问题</t>

时间:2010-03-10 02:35:02

标签: subsonic3

有一点,SimpleRepository不支持枚举。如果你有一个带有枚举的POCO对象,它将无法正确存在,你必须有一个你会使用的支持变量,例如:

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**

此异常发生在

的第95行

C:\ TEMP \ subsonic \ SubSonic.Core \ Extensions \ Objects.cs:第95行中的SubSonic.Extensions.Objects.ChangeTypeTo(Object value,Type conversionType)

1 个答案:

答案 0 :(得分:0)

我修补了Subsonic.Extensions.Objects.ChangeTypeTo第95行以包含此子句:

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

因此从int32到Enum的直接转换不再抛出异常