Entity Framework 6 0.1 到 0.1 与流利的关系 api
Entity Framework 6 0.1 to 0.1 relationship with fluent api
假设我想在 Entity Framwork 6 中为公司拼车建模:
- 我有员工和汽车。
- 员工可以有车也可以没有车。
- 汽车可以属于员工,也可以不属于员工。
我知道如何在具有中间关系的关系数据库中对此进行建模 table:
EmployeeCarAssociation
-EmployeeId
-CarId
使用 EmpoyeeId
和 CarId
作为主键,并且对两列都有唯一约束。
但是我如何使用 EF6 Fluent 创建这种 0.1 到 0.1 的关系 Api?
试试这个代码:
public class Employee
{
public int Id { get; set; }
public Car Car { get; set; }
public int? CarId { get; set; }
}
public class Car
{
public int Id { get; set; }
public Employee Employee { get; set; }
}
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Car> Cars { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(c => c.Employee)
.WithOptionalDependent(e => e.Car)
.Map(config =>
{
config.MapKey("EmployeeId");
});
base.OnModelCreating(modelBuilder);
}
}
假设我想在 Entity Framwork 6 中为公司拼车建模:
- 我有员工和汽车。
- 员工可以有车也可以没有车。
- 汽车可以属于员工,也可以不属于员工。
我知道如何在具有中间关系的关系数据库中对此进行建模 table:
EmployeeCarAssociation
-EmployeeId
-CarId
使用 EmpoyeeId
和 CarId
作为主键,并且对两列都有唯一约束。
但是我如何使用 EF6 Fluent 创建这种 0.1 到 0.1 的关系 Api?
试试这个代码:
public class Employee
{
public int Id { get; set; }
public Car Car { get; set; }
public int? CarId { get; set; }
}
public class Car
{
public int Id { get; set; }
public Employee Employee { get; set; }
}
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
public DbSet<Car> Cars { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(c => c.Employee)
.WithOptionalDependent(e => e.Car)
.Map(config =>
{
config.MapKey("EmployeeId");
});
base.OnModelCreating(modelBuilder);
}
}