0

こんにちは、

Entity Framework を実装しようとしていますが、主従関係を利用しようとすると問題が発生するようです。理想的には、コンボボックスから会社を選択し、その後のコンボボックスに選択した会社の従業員名のリストを入力できるようにしたいと考えています。いくつかの追加データを含むブリッジ テーブルを持つ多対多の関係でこれを達成しようとすると、問題が発生しているようです。以下は、私が使用している 3 つのデータベース テーブルの簡易バージョンです。

create table Organization.Company
(
   CompanyID int not null,
   CompanyName varchar(40) not null,
   ServiceRepresentative varchar(20) not null,
   primary key (CompanyID)
)

create table Person.Employment
(
   CompanyID int not null,
   PersonID uniqueidentifier not null,
   EmployeeID int not null,
   FullTime bit not null,
   HoursPerWeek float null,
   primary key (CompanyID, PersonID),
   constraint fk_Company_Employment foreign key (CompanyID) references Organization.Company(CompanyID),
   constraint fk_Person_Employment foreign key (PersonID) references Person.ContactInfo(PersonID)
)

create table Person.ContactInfo
(
   PersonID uniqueidentifier not null,
   FirstName varchar(40) not null,
   LastName varchar(40) not null,
   primary key (PersonID)
)

私の分離コードには、次のものがあります(WinForms):

    private orgEntities db;
    private BindingSource companyBinding;
    private BindingSource employeeBinding;

    public MainForm()
    {
        InitializeComponent();

        this.db = new orgEntities();
        this.companyBinding = new BindingSource();
        this.employeeBinding = new BindingSource();

        this.companyBinding.DataSource = db.Companies.OrderBy(x => x.CompanyName);

        this.employeeBinding.DataSource = companyBinding;
        this.employeeBinding.DataMember = "Employment";

        this.currentCompanyComboBox.DataSource = companyBinding;
        this.currentCompanyComboBox.DisplayMember = "CompanyName";
        this.currentCompanyComboBox.ValueMember = "CompanyID";

        this.currentEmployeeComboBox.DataSource = employeeBinding;
        this.currentEmployeeComboBox.DisplayMember = "ContactInfo.FullName";  // Generated by extension class
        this.currentEmployeeComboBox.ValueMember = "PersonID";           
    }

私が遭遇しているように見える問題は、会社が選択されたときにコンボボックス内に 1 人の従業員しか表示されないことです。「ContactInfo.FullName」を「EmployeeID」に変更すると、EmployeeID の完全なリストが取得されます。エンティティ フレームワークが最初の人をつかみ、その FullName プロパティに移動すると、その情報だけが表示されると想定しています。

ブリッジ テーブル (Person.Employment) が存在する状態で、このドロップダウンに表示する名前の完全なリストを取得する方法はありますか?それとも、Employment テーブルと ContactInfo テーブルを組み合わせて使用​​するビューを作成するだけのほうがよいでしょうか? 2つの別々のテーブルではなく、edmxファイルに?

私はこれについて間違った方向に進んでいる可能性があることを理解しており、誰かがこれについて正しい方向に私を向けることができれば感謝しています. ありがとう、素晴らしい一日を!

4

0 に答える 0