c# - Entity Framework Code First 读写桥表

标签 c# sql asp.net-mvc entity-framework ef-code-first

我只是有一个关于 bridge(link) 表的简单问题。我有两个具有多对多 关系的表,Visual Studio 使用这两个表的主键 自动生成桥接表。我对如何从表中读取数据和向表中写入数据感到有点困惑。

当我读取数据时,我是从具有多对多 关系的两个表中的一个表还是两个表中查询和获取数据?但是我该如何处理桥接表呢?

当我写入数据时,同样的事情,我是将数据保存到具有多对多关系的两个表中的一个还是两个?我怎么知道什么时候应该保存到桥接表?

非常困惑,我找不到任何好的教程和我可以学习的代码示例。由于我创建了具有读写ViewsControllers,我认为这个问题在自动生成的代码中得到了处理,但是由于桥接表是空的,尽管我添加了数据到其他表,我需要问这个问题来弄清楚这个问题!如果有任何人可以告诉我它是如何通过简单的示例或链接工作的,请提出建议。谢谢!

编辑:一些表格的表格实体。我正在使用 ASP.NET MVC 做这个项目。

public class Order
{
public int ID { get; set; }
public string Name { get; set; }
public int? ManufacturerID { get; set; }
public virtual Manufacturer Manufacturer { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}

public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int EmployeeNumber { get; set; }
public virtual ICollection<Timeunit> Timeunits { get; set; }
public virtual ICollection<Order> Orders { get; set; }
}

最佳答案

上述关系将创建一个桥接表,如下所示:

public class OrderEmployeeEnrollments{
  public int OrderId {get;set;}
  public int EmployeeId {get;set;}
}

从员工的 Order 表中读取数据:

using (var context = new YourContext())
{
  var order= context.Orders.Where(o => o.OrderEmployeeEnrollments.
               Any(e => e.Employee.EmployeeId == employeeId );
}

插入Order表:

using (var context = new YourContext())
{
   var order= new Order{
     Name="",
     ManufacturerID= 2 ,
     Manufacturer = new Manufacturer { // create  Manufacturer },
     Employees = new List<Employee> { // create list}    
  }
  context.Orders.Add(order);
  context.SaveChanges();
}

要插入现有员工的“订单”表:

 using (var context = new YourContext())
{
   var order= new Order{
     Name="",
     ManufacturerID= 2 ,         
     Employees = context.Employees.Where(e=> e.Name=="Name")    
  }
  context.Orders.Add(order);
  context.SaveChanges();
}

希望这会有所帮助:)

关于c# - Entity Framework Code First 读写桥表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36492448/

相关文章:

sql - ORDER BY 子句的 CASE WHEN 语句

具有嵌套组函数的 SQL

PHP 选择 2 个日期之间的平均值

c# - DotNetZip 从 MemoryStream 打开 zip 文件

C# 上下文已经在跟踪实体、azure Active Directory 图形 api。添加群组成员

c# - 如何模拟 OracleConnection 和 OracleCommand?

asp.net-mvc - 将数据放入交替的表列中

c# - 如何添加额外的路线?

c# - 以编程方式将证书添加到个人商店

c# - 多线程TCP