我正在尝试从数据库中删除DataGrid中的选定实体。
using (var db = new MonitoringSystemContext())
{
IT_Service selectedService = (IT_Service)ItServiceDataGrid.SelectedItem;
try
{
db.IT_Service.Remove(selectedService);
db.SaveChanges();
MessageBox.Show("Successfully", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
}
catch (Exception)
{
MessageBox.Show("Error", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
UpdateDataGrids();
}
}
但是我收到类型' System.InvalidCastException的错误':
无法将
<>f__AnonymousType1'3[System.Int32,System.String,System.String]
类型的对象转换为DAL.Entity.IT_Service
类型。
请帮我解决这个错误。谢谢你的回答
UPD:数据源:
var GetServices = from s in _context.IT_Service
join cat in _context.IT_Service_Category
on s.IT_Service_CategoryIT_Service_Category_ID equals cat.IT_Service_Category_ID
select new {
s.Service_ID,
s.Service_Name,
cat.IT_Service_Category_Name };
var resultServices = GetServices.ToList();
ItServiceDataGrid.ItemsSource = resultServices;
答案 0 :(得分:0)
您的数据源“resultServices”不是IT_Service
类型,它是anonymous type
,无法转换为IT_Service
一种选择是从网格中读取 ID ,然后使用数据库中的ID删除该元素。
试试这个:(请注意,在你的情况下使用动态不是一个好习惯)
using (var db = new MonitoringSystemContext())
{
dynamic selectedService = ItServiceDataGrid.SelectedItem;
try
{
int ID = selectedService.Service_ID;
var deletedService = db.IT_Service.FirstOrDefault(s=> s.Service_ID == ID);
if(deletedService != null)
{
db.IT_Service.Remove(deletedService);
db.SaveChanges();
MessageBox.Show("Successfully", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
}
}
catch (Exception)
{
MessageBox.Show("Error", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
UpdateDataGrids();
}
}