C# 实体框架6 0.1到0.1与fluent api的关系
假设我想在实体框架6中为公司汽车池建模:C# 实体框架6 0.1到0.1与fluent api的关系,c#,entity-framework,entity-framework-6,ef-fluent-api,C#,Entity Framework,Entity Framework 6,Ef Fluent Api,假设我想在实体框架6中为公司汽车池建模: 我有员工和汽车 雇员可以有车也可以没有车 汽车可以属于员工,也可以不属于员工 我知道如何在具有中间表的关系数据库中对此进行建模: EmployeeCarAssociation -EmployeeId -CarId 使用empoyeid和CarId作为主键,并在两列上使用uniqe约束 但是我如何使用EF6 Fluent Api创建这种0.1到0.1的关系呢?试试下面的代码: public class Employee { public in
- 我有员工和汽车李>
- 雇员可以有车也可以没有车
- 汽车可以属于员工,也可以不属于员工
EmployeeCarAssociation
-EmployeeId
-CarId
使用empoyeid
和CarId
作为主键,并在两列上使用uniqe约束
但是我如何使用EF6 Fluent Api创建这种0.1到0.1的关系呢?试试下面的代码:
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);
}
}
公共类员工
{
公共int Id{get;set;}
公共小汽车{get;set;}
公共int?CarId{get;set;}
}
公车
{
公共int Id{get;set;}
公共雇员雇员{get;set;}
}
公共类ApplicationDbContext:DbContext
{
公共数据库集雇员{get;set;}
公共数据库集车辆{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.has可选(c=>c.Employee)
.带有可选依赖项(e=>e.Car)
.Map(配置=>
{
config.MapKey(“EmployeeId”);
});
基于模型创建(modelBuilder);
}
}
这在实体框架中起作用,但不能在数据库级别强制执行0.1-0.1关系。它仅在Car表中为EmployeeId创建ForeignKey约束。从技术上讲,如果员工直接将值输入数据库,那么仍然可以将多辆车分配给一名员工。但是,只要只使用实体框架来修改数据,就可以这样做。