Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何为多对多关系插入实体?(实体框架)_Vb.net_Entity Framework_Ado.net_Many To Many - Fatal编程技术网

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

Vb.net 如何为多对多关系插入实体?(实体框架),vb.net,entity-framework,ado.net,many-to-many,Vb.net,Entity Framework,Ado.net,Many To Many,如果我在用户和角色之间建立了多对多关系,并且我有一个用户实体实例和多个角色ID,那么我可以在没有任何其他角色数据和没有首先对角色进行选择的情况下在这两种类型的实体之间插入关系吗 更新: 我可能还不够清楚。我没有角色的实例,只有角色id。是否可以在用户和角色之间创建关系,而不首先从数据库填充角色对象?如果不使用数据绑定,请确定。多对多映射为相互引用的列表。User.Roles.Add(Role…)应该可以。如果您有ID并且需要关联它们,则可以 您应该能够做到这一点(伪代码) 这里的关键是Attac

如果我在用户和角色之间建立了多对多关系,并且我有一个用户实体实例和多个角色ID,那么我可以在没有任何其他角色数据和没有首先对角色进行选择的情况下在这两种类型的实体之间插入关系吗

更新:


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

如果不使用数据绑定,请确定。多对多映射为相互引用的列表。User.Roles.Add(Role…)应该可以。

如果您有ID并且需要关联它们,则可以

您应该能够做到这一点(伪代码)

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

一旦你有了它,你就可以建立关系了

希望这有帮助

干杯
Alex

我没有角色的实例,我只有一个角色id。如果我创建一个新角色并只指定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();