Не кастуется один из классов БД в класс Object
Я делаю приложение для управления БД в проекте WPF. Для изменения объекта таблицы я сделал две кнопки: "найти объект" и "изменить объект". Первая(Find_CLick) должна находить объект в выбранной таблице(выбираю таблицу в комбобоксе),а вторая(Change_Click) должна менять значение полей этого обьекта на поля из ТекстБоксов.В классе окна у меня переменная curObj типа Object.Туда я записываю найденный обьект в первой функции.Во второй я нахожу опять обьект и меняю его поля.Но почему-то после нажатия кнопки вылазит исключение
Unable to cast object of type 'System.Object' to type 'Library.Models.Group'
В другие классы он нормально кастует.Ошибка возникает в функции Change_Click в case "Group".Залил сюда часть кода.Код у меня не очень,потому что не разобрался еще с WPF нормально,но вообщем здесь проблема не в моем говнокоде,а именно в касте,иначе бы он остальные классы не кастовал.
Класс Окна:
public partial class MainWindow : Window
{
Object curObj;
public MainWindow()
{
InitializeComponent();
curObj = new Object();
}
private void Find_Click(object sender, RoutedEventArgs e)
{
string text = LibraryObjects.Text;
using (LibraryContext db = new LibraryContext())
{
try
{
switch (text)
{
case "Libs":
{
if (tb1.Text != "")
{
foreach (var i in db.Libs)
{
if(i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Librarians":
{
if (tb1.Text != "" && tb2.Text != "" && list3.Text != null)
{
foreach (var i in db.Librarians)
{
if (i.FirstName == tb1.Text&&i.LastName==tb2.Text&&i.Id_Lib==int.Parse(list3.Text))
{
curObj = i;
}
}
}
break;
}
case "Groups":
{
if (tb1.Text != "" && list2.Text != null)
{
foreach (var i in db.Groups)
{
if (i.Name == tb1.Text && i.Id_Faculty == int.Parse(tb2.Text) )
{
curObj = i;
}
}
}
break;
}
case "Faculties":
{
if (tb1.Text != "") {
foreach (var i in db.Faculties)
{
if (i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Students":
{
if (tb1.Text != "" && tb2.Text != "" && list3.Text != null && tb4.Text != "")
{
foreach (var i in db.Students)
{
if (i.FirstName == tb1.Text && i.LastName == tb2.Text && i.Id_Group == int.Parse(list3.Text)&&i.Term==int.Parse(tb4.Text))
{
curObj = i;
}
}
}
break;
}
case "S_Cards":
{
if (list1.Text != null && list2.Text != null && tb3.Text != "" && tb4.Text != "" && list5.Text != null && list6.Text != null)
{
foreach (var i in db.SCards)
{
if (i.Id_Student == int.Parse(list1.Text) && i.Id_Book == int.Parse(tb2.Text) && i.DateIn == DateTime.Parse(tb3.Text)
&& i.DateOut == DateTime.Parse(tb4.Text)&& i.Id_Lib == int.Parse(list5.Text)&& i.Id_Librarian == int.Parse(list6.Text))
{
curObj = i;
}
}
}
break;
}
case "Teachers":
{
if (tb1.Text != "" && tb2.Text != "" && list3.Text != null)
{
foreach (var i in db.Teachers)
{
if (i.FirstName == tb1.Text && i.LastName == tb2.Text && i.Id_Dep == int.Parse(list3.Text))
{
curObj = i;
}
}
}
break;
}
case "T_Cards":
{
if (list1.Text != null && list2.Text != null && tb3.Text != "" && tb4.Text != "" && list5.Text != null && list6.Text != null)
{
foreach (var i in db.TCards)
{
if (i.Id_Teacher == int.Parse(list1.Text) && i.Id_Book == int.Parse(tb2.Text) && i.DateIn == DateTime.Parse(tb3.Text)
&& i.DateOut == DateTime.Parse(tb4.Text) && i.Id_Lib == int.Parse(list5.Text) && i.Id_Librarian == int.Parse(list6.Text))
{
curObj = i;
}
}
}
break;
}
case "Departments":
{
if (tb1.Text != "") {
foreach (var i in db.Departments)
{
if (i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Authors":
{
if (tb1.Text != "" && tb2.Text != "") {
foreach (var i in db.Authors)
{
if (i.FirstName == tb1.Text && i.LastName == tb2.Text )
{
curObj = i;
}
}
}
break;
}
case "Categories":
{
if (tb1.Text != "") {
foreach (var i in db.Categories)
{
if (i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Presses":
{
if (tb1.Text != "") {
foreach (var i in db.Presses)
{
if (i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Themes":
{
if (tb1.Text != "") {
foreach (var i in db.Themes)
{
if (i.Name == tb1.Text)
{
curObj = i;
}
}
}
break;
}
case "Books":
{
if (tb1.Text != "" && tb2.Text != "" && tb3.Text != "" && list4.Text != null && list5.Text != null
&& list6.Text != null && list7.Text != null && list8.Text != null && tb9.Text != "" && tb10.Text != "")
{
foreach (var i in db.Books)
{
if (i.Name == tb1.Text && i.Pages == int.Parse(tb2.Text) && i.YearPress == int.Parse(tb3.Text)&& i.Id_Themes==int.Parse(list4.Text)
&& i.Id_Category == int.Parse(list5.Text) && i.Id_Author == int.Parse(list6.Text) && i.Id_Press == int.Parse(list7.Text) &&
i.Id_Lib == int.Parse(list8.Text)&& i.Comment == tb9.Text&& i.Quantity==int.Parse(tb10.Text))
{
curObj = i;
}
}
}
break;
}
}
db.SaveChanges();
}
catch(Exception) { }
}
}
private void Change_Click(object sender, RoutedEventArgs e)
{
string? text = LibraryObjects.Text;
using (LibraryContext db = new LibraryContext())
{
switch (text)
{
case "Libs":
{
foreach (var i in db.Libs)
{
var lib = (Lib)curObj;
if (i.Name == lib.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Librarians":
{
foreach (var i in db.Librarians)
{
var libr = (Librarian)curObj;
if (i.FirstName == libr.FirstName&&i.LastName==libr.LastName&&i.Id_Lib==libr.Id_Lib)
{
i.FirstName = tb1.Text;
i.LastName = tb2.Text;
}
}
break;
}
case "Groups":
{
foreach (var i in db.Groups)
{
var group = (Group)curObj;
if (i.Name == group.Name&&i.Id_Faculty==group.Id_Faculty)
{
i.Name = tb1.Text;
}
}
break;
}
case "Faculties":
{
foreach (var i in db.Faculties)
{
var fac = (Faculty)curObj;
if (i.Name == fac.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Students":
{
foreach (var i in db.Students)
{
var stud = (Student)curObj;
if (i.FirstName == stud.FirstName && i.LastName == stud.LastName && i.Id_Group == stud.Id_Group&&i.Term==stud.Term)
{
i.FirstName = tb1.Text;
i.LastName = tb2.Text;
i.Term = int.Parse(tb4.Text);
}
}
break;
}
case "S_Cards":
{
foreach (var i in db.SCards)
{
var scard = (SCard)curObj;
if (i.Id_Student == scard.Id_Student && i.Id_Book == scard.Id_Book && i.DateIn == scard.DateIn
&& i.DateOut == scard.DateOut && i.Id_Lib == scard.Id_Lib && i.Id_Librarian == scard.Id_Librarian)
{
i.Id_Book = int.Parse(tb2.Text);
}
}
break;
}
case "Teachers":
{
foreach (var i in db.Teachers)
{
var teacher = (Teacher)curObj;
if (i.FirstName == teacher.FirstName && i.LastName == teacher.LastName && i.Id_Dep == teacher.Id_Dep)
{
i.FirstName = tb1.Text;
i.LastName = tb2.Text;
}
}
break;
}
case "T_Cards":
{
foreach (var i in db.TCards)
{
var tcard = (TCard)curObj;
if (i.Id_Teacher == tcard.Id_Teacher && i.Id_Book == tcard.Id_Book && i.DateIn == tcard.DateIn
&& i.DateOut == tcard.DateOut && i.Id_Lib == tcard.Id_Lib && i.Id_Librarian == tcard.Id_Librarian)
{
i.Id_Book = int.Parse(tb2.Text);
}
}
break;
}
case "Departments":
{
foreach (var i in db.Departments)
{
var dep = (Department)curObj;
if (i.Name == dep.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Authors":
{
foreach (var i in db.Authors)
{
var author = (Author)curObj;
if (i.FirstName == author.FirstName&&i.LastName==author.LastName)
{
i.FirstName = tb1.Text;
i.LastName = tb2.Text;
}
}
break;
}
case "Categories":
{
foreach (var i in db.Categories)
{
var cat = (Category)curObj;
if (i.Name == cat.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Presses":
{
foreach (var i in db.Presses)
{
var press = (Press)curObj;
if (i.Name == press.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Themes":
{
foreach (var i in db.Themes)
{
var theme = (Theme)curObj;
if (i.Name == theme.Name)
{
i.Name = tb1.Text;
}
}
break;
}
case "Books":
{
foreach (var i in db.Books)
{
var book = (Book)curObj;
if (i.Name == book.Name && i.Pages == book.Pages && i.YearPress == book.Id_Press && i.Id_Themes == book.Id_Themes
&& i.Id_Category == book.Id_Category && i.Id_Author == book.Id_Author && i.Id_Press == book.Id_Press &&
i.Id_Lib == book.Id_Lib && i.Comment == book.Comment && i.Quantity == book.Quantity)
{
showMessage();
i.Name = tb1.Text;
i.Pages = int.Parse(tb2.Text);
i.YearPress = int.Parse(tb3.Text);
i.Comment = tb9.Text;
i.Quantity = int.Parse(tb10.Text);
}
}
break;
}
}
db.SaveChanges();
}
}
класс Group(создан scaffold'ом):
using System;
using System.Collections.Generic;
namespace Library.Models
{
public partial class Group
{
public Group()
{
Students = new HashSet<Student>();
}
public Group(string Name, int Id_Faculty)
{
this.Name = Name;
this.Id_Faculty = Id_Faculty;
}
public int Id { get; set; }
public string Name { get; set; } = null!;
public int Id_Faculty { get; set; }
public virtual Faculty IdFacultyNavigation { get; set; } = null!;
public virtual ICollection<Student> Students { get; set; }
}
}
