EF6 如何为 DevExpress LookupEdit 获取数据

EF6 How to obtain data for DevExpress LookupEdit

我有一个 table 结构如下:

CREATE TABLE employee
(
    employeeid integer NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    familyname varchar(100) NOT NULL,
    givenname varchar(100) NOT NULL,
    position varchar(100) NOT NULL,
    startdate date,
    address varchar(250),
    address2 varchar(250),
    city varchar(100),
    provincecd character(2),
    countrycd character(2),
    postalcode character varying(15),
    enddate date,
    employmentstatusid integer,
    photo bytea,
    dob date,
);

这个 table 和其他几个被配置到一个 C# EF6 项目中。

我有一个 VB.Net WinForms 项目,它使用 EF6 实体作为它的数据存储。

我正在使用 DevExpress XtraGrid 控件以交互方式填充我的数据库。问题出在我需要向 DevExpress LookupEdit 控件提供数据的地方,我在其中使用员工实体中的数据子集来填充 LookupEdit。我要使用的数据可以由以下 SQL 查询表示:

    SELECT
    employeeid
    , concat(familyname, ', ', givenname) as fullname
FROM
    employee
WHERE
    employmentstatusid in (1,2)
ORDER BY
    familyname
    , givenname

我不确定如何使用 EF6 获取数据来填充我的 LookupEdit。

我是 EF 的新手,但我已经使用 ADO.Net 数据集多年。

您使用 LINQ to Entities 查询 EF DbContext。在你的情况下,它将是这样的:

Dim employeeNamesById = myDbContext.employees.
                                    Where(Function(e) {1, 2}.Contains(e.employeestatusid)).
                                    OrderBy(Function(e) e.familyname).
                                    ThenBy(Function(e) e.givenname).
                                    Select(Function(e) New With
                                                       {
                                                           e.employeeid,
                                                           .fullname = e.familyname & ", " & e.givenname
                                                       }).
                                    ToList()

这将创建一个泛型 List 匿名类型的对象。您可能更愿意使用适当的属性定义 class 并创建其实例。此外,该代码使用函数语法,这通常是我的偏好。如果您愿意,可以使用查询语法,但如果您愿意,我会把它留给您。