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

ada*_*101 5 vb.net ado.net many-to-many entity-framework

如果我是用户和角色之间的多对多关系,并且我有一个用户实体和几个角色ID的实例,我可以在两种类型的实体之间插入关系,而无需任何其他角色数据,也无需对角色第一?

更新:

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

Ale*_*mes 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(); 
Run Code Online (Sandbox Code Playgroud)

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

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

希望这可以帮助

干杯亚历克斯