Поймали "Указанный состав недействителен."ошибка при получении данных в C # ASP.net MVC? - PullRequest
0 голосов
/ 08 июня 2019

Я новичок в Entity Framework. Я пытался получить свои данные из локальной базы данных через эту базовую строку кода, я хотел сохранить все объекты в строке «Объект» в списке.

Но похоже, что это не работает, что бы я ни пытался. Я использую сервер SQL, ASP.NET MVC. Мой код выглядит примерно так:

[HttpGet]
public List<Object> Function1()
{
    List<Object> result = new List<Object>();

    using (DatabaseContext db = new DatabaseContext())
    {
        result = db.Object.ToList();
        // ...
        return result;
    }
}

Это всегда заканчивалось словами "Указанное приведение неверно". ошибка: enter image description here

Здесь была обнаружена ошибка:

Строка 137: result = db.Object.ToList ();

Это мой класс модели, хотя я добавил некоторые функции, но я не изменил никаких свойств по умолчанию, которые Entity установил для меня:

public partial class Object
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string Name { get; set; }
        public int Like { get; set; }
        public int View { get; set; }
        public byte Level
        {
            get { return Level; }
            set
            {
                if (value < 1 || value > 3)
                {
                    Level = 1;
                    throw new Exception("Level must be in 1 to 3. By default, it becomes 1");
                }
                else
                {
                    Level = value;
                }
            }
        }
        public string Introduction { get; set; }
        public string VideoUrl { get; set; }
        public string Tag { get; set; }
        public string Steps { get; set; }

        public DateTime Date { get; set; }

        public Object(string name, byte level, string introduction = null)
        {
            this.Name = name;
            this.Level = level;
            this.Introduction = introduction;
        }
    }

Это нормально для добавления функций и исправления таких свойств ??

Это мой дизайн таблицы в sql: pic

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Вам нужно поместить объект в конкретный объект модели примерно так:

[HttpGet]
public List<Object> Function1()
{
    List<Object> result = new List<Object>();
    using (DatabaseContext db = new DatabaseContext())
    {
        //result = db.Object;
        result = (from d in db.Object.ToList()
                  select new Object{
                      prop1 = d.prop1,
                      prop2 = d.prop2,
                  .......
            }).ToList();
    // ...
    return result;
}

}

0 голосов
/ 08 июня 2019

Вы использовали public byte Level auto-свойство с пользовательским setter методом.

Это должно сопровождаться закрытой переменной. Что-то вроде

private byte _level
public byte Level
{
    get { return _level; }
    set
    {
        if (value < 1 || value > 3)
        {
            _level = 1;
            throw new Exception("Level must be in 1 to 3. By default, it becomes 1");
        }
        else
        {
            _level = value;
        }
    }
}
...