複数のテーブルのデータで構成されるオブジェクトが必要な場合は、すべてのテーブルを .edmx ファイルに追加するだけです。そこから、必要なものを取得するクラスを作成できます。1:1 ペアリングの必要はありません。私のメソッド内で、たとえば主キーに基づいてオブジェクトを作成TableA
できます。
Obj GetObj(string primaryKey)
{
dataBase context = new dataBase();
var obj = (from a
in context.TableA
where a.Id == primaryKey
select a);
var otherObj = (from b
in context.TableB
where b.Id == a.ForeignKey
select b);
Obj foo = new Obj();
foo.Id = a.Id;
foo.SomethingElse = a.Somthing;
foo.FromB = b.Id;
foo.AnInt = (int)b.count;
return foo;
}
いくつかの変更を保存するには;
void AddNewObject()
{
dataBase context = new Context;
TableA a = new TableA();
TableB b = new TableB();
a.Id = this.Id;
a.OtherField = this.OtherField;
b.Key = this.BKey;
b.SomeInt = this.SomeInt;
context.AddObject("TableA", a);
context.AddObject("TableB", b);
context.SaveChanges();
}
もちろん、これらには含まれていないエラー処理が必要になりますが、概念は、標準の EntityObject<->Table マッピングがある場合とそれほど変わりません。通常のマッピングの一部を保持してから、その上にクラスを構築する方が簡単だと思います。