有一点,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)
答案 0 :(得分:0)
我修补了Subsonic.Extensions.Objects.ChangeTypeTo第95行以包含此子句:
else if (conversionType.IsEnum)
{
return Enum.ToObject(conversionType, value);
}
因此从int32到Enum的直接转换不再抛出异常