Почему при добавлении в таблицу новой записи все предыдущие поля letter зануляются и нету поля в базе,хотя указывал его при создании(CodeFirst)?

164
24 декабря 2017, 06:29
  static void Main(string[] args)
        {
          //  Database.SetInitializer(new <KekDB>());
            char a;
            string name, family;
            int age;
            using (KekDB db=new KekDB())
            {
                //try
                //{
                    Console.WriteLine("Input char");
                    a=Convert.ToChar(Console.ReadLine());
                    Console.WriteLine("Input age");
                    age = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Input name");
                    name =Convert.ToString(Console.ReadLine());
                    Console.WriteLine("Input family");
                    family = Convert.ToString(Console.ReadLine());
                var cl = new ClassRoom() { letter = a};
                    db.ClassTable.Add(cl);
                    db.SaveChanges();
                    var pr = new Person(name,family,age,cl);
                    db.PersonTable.Add(pr);
                    db.SaveChanges();
                var list1 = db.ClassTable.ToList();
                foreach (var item in list1)
                {
                    Console.WriteLine("id={0},letter={1}",item.Id,item.letter);
                }
                var list2 = db.PersonTable.ToList();
                foreach (var item in list2)
                {
                    Console.WriteLine("Age={0},clas={1},FirstName={2},LastName={3},personId={4}",item.Age,item.clas,item.FirstName,item.LastName,item.personId);
                }
            }
                //catch (Exception)
                //{
                //    Console.WriteLine("Error");
                //}
           // }
            Console.WriteLine("Input smt");
            Console.ReadKey();
        }
    }
}
namespace EF2
{
   public class ClassRoom
    {
        [Key]
        public int Id { get; set; }
        public char letter { get; set; }
        public ICollection<Person> persons { get; set; }
        public ClassRoom() { }
        public ClassRoom(char a)
        {
            letter = a;
        }
    }
}
 public class Person
    {
        public int personId { get; set; }
        public string FirstName{get;set;}
        public string LastName { get; set; }
        public int Age { get; set; }
        public ClassRoom clas { get; set; }
        public Person() { }
         public Person(string firstName,string lastName,int Age,ClassRoom cl)
        {
            FirstName = firstName;
            LastName = lastName;
            this.Age = Age;
            clas = cl;
        }
    }
}

Answer 1

EF не поддерживает мэпинг char типа.

Его надо заменить на строчку при этом можно указать её максимальный размер через атрибут.

[MaxLength(1)]
public string letter { get; set; }
READ ALSO
Консоль и SetCursorPosition C#

Консоль и SetCursorPosition C#

Доброго времени сутокДелаю лабораторную работу по программированию (вопрос не о методе решения) и возникла проблема с консолью

223
Определить следующие 6 месяцев

Определить следующие 6 месяцев

Как можно при помощи momentjs определить следующие 6 месяцев? Например, сегодня 12 месяц по счёту и я бы хотел на выходе получить массив:

270
отсортировать буквы и цифры javascript

отсортировать буквы и цифры javascript

дана строка из букв и цифрнадо отсортировать что бы буквы ушли вперед, а цифры назад

186
JSON в массив объектов

JSON в массив объектов

Есть JSON объект

321