我有一个由2个外键组成的表。而这些只是桌子上的元素。该表旨在创建2个其他表之间的关联。例如:表是Users_Products,并且只有2列是UserId和ProductID,都是外键。当我从数据库生成EF对象时,它不会创建Users_Products对象,它只会自动创建导航属性。现在如何使用EF在我的Users_Products表中插入数据?带有2个外键实体框架的表
2
A
回答
5
您可以获取一些用户对象并将产品添加到其导航属性中。
User user = context.Users.Where(u => u.Id == 1);
Product product = context.Products.Where(p => p.Id == 1);
user.Products.Add(product);
context.SaveChanges();
1
using (var ctx = new ...)
{
var user = new User();
var product = new Product();
user.Products.Add(product);
ctx.Users.AddObject(user);
ctx.SaveChanges();
}
1
如果你想创建关系(插入记录到User_Products
表),你只需要使用导航属性无论是在User
或Product
:
user.Products.Add(product);
或
product.Users.Add(user);
这意味着您至少必须具有导航属性才能创建关系。如果你已经加载了当前比赛的实体,你可以使用@Pavel描述的方法。
如果不装入实体,或者如果你不想做两次查询数据库只是为了让一个关系,你可以使用此解决方法:
// Make dummy objects for records existing in your database
var user = new User() { Id = 1 };
var product = new Product() { Id = 1 };
// Ensure that your context knows instances and does not track them as new or modified
context.Users.Attach(user);
context.Products.Attach(product);
// Again make relation and save changes
user.Products.Add(product);
ctx.SaveChanges();
3
对于代码示例,演示如何要在EF中使用多对多关系,请参阅使用多对多关系 The Entity Framework 4.0 and ASP.NET – Getting Started Part 5中的一节。
那就是EF 4.0/Database First;有关使用DbContext API的示例,请参阅将课程分配添加到教师编辑页面的Updating Related Data with the Entity Framework in an ASP.NET MVC Application (6 of 10)。
相关问题
- 1. 实体框架,表2个的外键2页不同的表
- 2. 使用实体框架Core创建带有外键的新表
- 3. 实体框架,外键和实体键
- 4. 外键实体框架
- 5. 实体框架外键DataAnnotations
- 6. 实体框架外键
- 7. 外键实体框架
- 8. 实体框架:外键
- 9. 实体框架数据建模:2个外键和主键
- 10. 用SimpleMembership和带有外键的实体播种Enity框架
- 11. 带有流畅实体框架的外键
- 12. 实体框架外键到多个表/实体
- 13. 实体框架添加现有外键
- 14. 实体框架中的主键/外键
- 15. C#实体框架 - 多个外键
- 16. 实体框架插入多个外键
- 17. 没有外键与实体框架4或外键的Asp.net MVC 2关系
- 18. 无法在实体框架中插入带有外键的实体
- 19. 实体框架定义主键外键到另一个实体
- 20. 实体框架外键实例
- 21. 实体框架键列表
- 22. 查询带有2个外键的表
- 23. 带复合键的两个表加入实体框架
- 24. 带有2个连接的.NET实体框架查询
- 25. 实体框架中的外键
- 26. 实体框架中的外键关系
- 27. 比较外键的实体框架3.5
- 28. 使用外键的实体框架POCO
- 29. 实体框架中的外键记录
- 30. 实体框架中的外键关系
难道只是将新项目添加到产品表? – m0s
user.Products.Add(product)将在Users_Products表中添加条目。顺便说一句,如果您在此表中添加另一列(FK除外),EF也会为此表创建一个EntityType。 –