2

私は .NET と EF を初めて使用し、エンティティの動的クエリを必要とするアプリケーションに取り組んでいます。私は3つのテーブルを持つデータベースを持っています:

**Employee**      **EmployeeSkills**      **Skill**
Employee_ID       Id                      Skill_ID
Name              Employee_ID             Name
Address           Skill_ID                etc.
etc.              Level

クライアントから、選択用のプロパティ名と、フィルタリング用のプロパティと値のペアを含む辞書を送信します。たとえば、{"name", "skill",[{"skillId="1"},{"level=2"}] } は、ID 1 に関連付けられたスキルを持つすべての従業員と、レベル 2 でこのスキルの konoledge を返します。

クエリができるだけ単純になるようにエンティティを設計する必要があります。つまり、結合や複雑な SQL はありません。プロパティの選択とフィルタリングのためにすべてを実装することができましたが、まだ多対多の関係に苦労しています。

中間テーブルに Employee_ID フィールドと Skill_ID フィールドしかない場合、Employee.Skills を使用してスキルを参照できることはわかっています。現在のテーブル構造を使用してこれを行う方法はありますか?

従業員のすべてのスキルとそのレベルを取得するために必要なクエリを格納する Employee エンティティにある種のナビゲーション プロパティを定義するなど、何らかのマッピングがあることを願っています。

PS私はVS 2012、EFランタイムバージョン4.0.3、バージョン4.4.0を使用しています

4

1 に答える 1

2

codefirst アプローチを使用する場合は、Fluent API との関係を構成できます。

HasMany(e => e.Skills).WithMany(s=>s.Employees).Map(se =>
            {
                se.MapLeftKey("Skill_ID");
                se.MapRightKey("Employee_ID");
                se.ToTable("EmployeeSkills");
            });

更新DB-First アプローチでは、ナビゲーション プロパティを構成することはできません。 これは、あなたの状況で何ができるかを読むことができるリンクです。

于 2012-11-29T09:06:21.100 に答える