2011-05-05 49 views
0

我在EF4模型中有多对多的关系(许多组可以有很多程序)。我有一套程序ID和一组。我希望我的小组拥有由我拥有的程序ID代表的程序。实体框架4 - 仅使用外键支持子对象

我不想做的是去数据库获取程序实体。我已经知道他们的Id了。

我该怎么做?

回答

1

使用技巧与虚拟类:

// you have a group 
var group = GetGroupSomehow(); 
// if group is unknown to the context Attach it 
context.Groups.Attach(group); // if it is a new group use AddObject 
// now add programs 
foreach(var program in programId.Select(id => new Program { Id = id })) 
{ 
    // Attach dummy program first 
    context.Programs.Attach(program); 
    // Now make relation between group and program 
    group.Programs.Add(program); 
} 

context.SaveChanges(); 

唯一的要求是,没有Program从programIds已经加载。如果有任何程序被加载,它将变得更加复杂,因为您首先必须在ObjectStateManager中检查它并使用加载的实例。