如何为多对多关系插入实体? (实体框架)

时间:2009-06-01 20:25:27

标签: vb.net entity-framework ado.net many-to-many

如果我是用户和角色之间的多对多关系,并且我有一个用户实体和几个角色 ID 的实例,我可以在两种类型的实体之间插入关系而不需要任何实体其他角色数据并没有首先对角色进行选择?

更新

我可能不够清楚。我没有角色的实例,只有角色id。是否可以在不首先从数据库中填充Role对象的情况下创建User和Role之间的关系?

2 个答案:

答案 0 :(得分:9)

如果您有ID并且需要将它们联系起来,请单击

你应该可以这样做(伪代码)

// how you get this doesn't matter so long as it is in the Context
User user = ...; 
Role role = new Role {Id = 2}; 
// role 2 is in unchanged state
ctx.AttachTo("Roles", role); 
// role 2 is unchanged + added relationship between user and role 2
user.Roles.Add(role); 
ctx.SaveChanges(); 

这里的关键是AttachTo将一个实体置于未更改状态的ObjectState管理器中。只要您不需要修改该实体,并且只使用if建立关系,您甚至不需要知道所有属性值,PK就足够了。

一旦你附上了它,你就可以建立这种关系。

希望这有帮助

干杯 亚历

答案 1 :(得分:2)

如果您没有使用数据绑定,请确保。多对多被映射为彼此的引用列表。 User.Roles.Add(Role ...)应该没问题。