1

使用EntityFramework,我有这个非常简单的数据库模型,包含 2 个表:

CustomerType : Id (PK), description  [Id integer]
Customer : Id(PK), CustType, name    [id,custtype are integers]

CustType 是引用 CustomerType.Id 的外键

现在在一个表单中,我将该 datagridview 绑定到客户。第一个单元格是要填充 Customer.Name 的自由文本,第二个是绑定到 CustomerType.description 以显示所有可能的客户类型的组合框 (theCellComboBox):

为此,我从数据源窗口拖放了 Customer 实体,以便它自动生成 bindingNavigator UI 以及 datagridview。最后在表单设计器中添加了 customerBindingSource、customerBindingNavigator 和 customerTypeBindingSource。

我添加的唯一代码是在我拥有这个的表单的构造函数中:

public FCustomer()
{
  InitializeComponent();

  customerBindingSource.DataSource = context.Customers;
  customerBindingSource.AddingNew += new System.ComponentModel.AddingNewEventHandler(AddingNew);
  customerBindingSource.CurrentChanged += new System.EventHandler(CurrentChanged);

  customerDataGridView.AllowUserToAddRows = true;

  customerBindingNavigatorSaveItem.Click += new System.EventHandler(SaveItem_Click);
  customerBindingNavigatorSaveItem.Enabled = true;

  theCellComboBox.DataSource = context.CustomerTypes;
  theCellComboBox.ValueMember = "Id";
  theCellComboBox.DisplayMember = "description";
}

现在,当表单打开时,我要做的第一件事是通过按导航器上的“+”号在数据网格视图中添加一个新条目。我的行被插入到数据网格视图中,下拉列表中填充了我的客户类型。我选择其中一个,然后单击名称单元格。

它立即崩溃:

Exception   {"Object of type 'System.Int32' cannot be converted to type 'FMSW_CRM.CustomerType'."}  System.Exception {System.ArgumentException}

我无法弄清楚我在这里做错了什么。有人可以指导吗?谢谢

4

0 回答 0