Entity framework 查找编辑绑定

Entity framework 查找编辑绑定,entity-framework,devexpress,Entity Framework,Devexpress,我有一个使用实体框架代码编写的模型,最初名为Project 在我的UI中,有一个名为ProjectEdit的页面,如下图所示。如下图所示,Customer和bom是Lookup Edit 我正在尝试将客户和BOM加载到查找编辑,但它不起作用。下面是我的代码 //New if (entity == null) { Entity = new Project(); } //Edit else { ProjectCodeTextEdit.Dat

我有一个使用实体框架代码编写的模型,最初名为Project

在我的UI中,有一个名为ProjectEdit的页面,如下图所示。如下图所示,
Customer
bom
Lookup Edit

我正在尝试将
客户
BOM
加载到
查找编辑
,但它不起作用。下面是我的代码

//New
if (entity == null)
    {
        Entity = new Project();
    }

//Edit
else
    {
        ProjectCodeTextEdit.DataBindings.Add("EditValue", entity, "ProjectCode");
        DescriptionTextEdit.DataBindings.Add("EditValue", entity, "Description");
        CustomerLookUpEdit.DataBindings.Add("EditValue", entity, "CustomerId");
        BOMsLookUpEdit.DataBindings.Add("EditValue", entity, "BOMs");
    }
下面是我的LookUpEdit属性


通常,LookUpEdit对象的数据绑定的实现方式与TextEdit对象的不同。而在TextEdits的情况下,您只需要将变量值分配给EditValue属性(我认为您的TextEdits绑定工作正常,不是吗?),使用LookUp Edit,您应该将变量分配给对象的ValueMember和DisplayMember属性。这就是为什么我们通常使用LookUpEdit对象显示数据行,其中ValueMember是行的标识字段,DisplayMember是希望显示其值的行的字段

在您的情况下,您应该更清楚希望在查找编辑中显示什么。每个项目实例都有一个客户属性和多个BOM,对吗?因此CustomerLookUpEdit将显示一条记录,BOMsLookUpEdit将根据选择进行编辑的项目对象编辑一个值列表,对吗?我假设您的Customer和BOM类都有自己的ID属性和description属性。在这种情况下,您应该将这些值绑定到LookUpEdits。在初始化函数代码中添加以下行

CustomerLookUpEdit.Properties.DataSource = entity.Customer;
CustomerLookUpEdit.Properties.ValueMember = "someCustomerIDpropertyName" ;
CustomerLookUpEdit.Properties.DisplayMember = "someCustomerDescriptionpropertyName";

BOMsLookUpEdit.Properties.DataSource = entity.BOMs;
BOMsLookUpEdit.Properties.ValueMember = "someBOMIDpropertyName" ;
BOMsLookUpEdit.Properties.DisplayMember = "someBOMDescriptionpropertyName" ;

您可以在本主题中阅读更多内容

当我们向列表中添加实体时,我们必须注意我们的数据源如果是DBContext或DBSet,每个数据源在编译器中都有含义,这就是您的情况,在这种情况下,您必须像DBSet一样指定数据源并获取实体

Add<TEntity>(TEntity entity)
Add(tenty实体)

省略类型参数是可能的,因为编译器将推断它。

我已经尝试了上面提到的解决方案。此外,我还尝试使用我在问题中添加的查找编辑属性。不幸的是,它不起作用。我已经解决了这个问题。我认为这是由于实体框架。在
CustomerLookUpEdit.Properties.DataSource=entity.Customer中
line,
entity.Customer
必须替换为
entity.Customer.ToList()
实际上你是对的,我认为数据源对象必须实现IList或IListSource接口,因此即使只有一个客户,也必须将其添加为列表