我在使我的组合框正确级联时遇到了一些麻烦。我正在使用WinForms与实体框架代码优先,我正在努力让第二个组合框正常工作。我的类别模型如下所示:
public class Category
{
[Key]
public int ID { get; set; }
[Required]
public string CategoryName { get; set; }
}
我的子类别如下所示:
public class SubCategory
{
[Key]
public int ID { get; set; }
public virtual Category Category { get; set; }
[Required]
public string SubCategoryName { get; set; }
}
在类别组合框的SelectedIndexChanged事件中,我尝试了以下代码:
cmboSubCategory.DataSource = ( from sc in db.SubCategories.AsEnumerable()
where sc.Category == int.Parse( cmboCategory.SelectedValue.ToString() )
select sc ).ToList();
但是编译器告诉我
Operator '==' cannot be applied to operands of type 'Category' and 'int'
在数据库中查看SubCategories表中的FK字段名为Category_ID但是当我尝试使用此字段名称时,编译器会抱怨该字段不存在。如何使用模型中定义的虚拟字段名称进行查找?我做错了什么?
答案 0 :(得分:3)
无法使用int等于Category对象。使用id检查是否等于。
我认为你遗失了.ID
where sc.Category.ID == int.Parse( cmboCategory.SelectedValue.ToString() )
答案 1 :(得分:0)
无法检查Category对象与int的相等性。使用id检查它们是否相等。
将ID属性添加到sc.Category
cmboSubCategory.DataSource = ( from sc in db.SubCategories.AsEnumerable()
where sc.Category.ID == int.Parse( cmboCategory.SelectedValue.ToString() )
select sc ).ToList();