Дозвуковой Простой репозиторий Проблемы GetPaged <T>Enum - PullRequest
0 голосов
/ 10 марта 2010

В какой-то момент SimpleRepository не поддерживал перечисления.Если бы у вас был объект POCO с Enum, он не сохранялся бы правильно, вы должны были иметь вспомогательную переменную, которую вы использовали бы, например:

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;
    }

Тогда имя в вашей таблице должно быть названнымпеременной, а не enum.

Эта проблема была решена с помощью недавнего патча на 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

SubSonic.Extensions.Objects.ChangeTypeTo (значение объекта, тип преобразование Тип)в C: \ TEMP \ subsonic \ SubSonic.Core \ Extensions \ Objects.cs: строка 95

1 Ответ

0 голосов
/ 10 марта 2010

Я исправил Subsonic.Extensions.Objects.ChangeTypeTo line 95, чтобы включить это предложение:

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

Так что прямое приведение от int32 к Enum больше не вызывает и исключение

...