如果我想要一个由多个表中的数据组成的对象,我只需将所有表添加到 .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 映射时的概念没有什么不同。我认为保留一些法线映射然后在其之上构建你的类更简单。