代码优先自定义数据库架构映射错误? [英] Code First Custom Database Schema Mapping Bug?
问题描述
大家好,所有
我想生成一个名为"TaskDetail"的表格。 ,而不是"TaskDetails"。
I want to Generate a table with name "TaskDetail" ,not "TaskDetails".
实体配置类是:
Entity configuration class is:
公共类TaskDetailConfiguration:EntityConfiguration< TaskDetail>
{
public TaskDetailConfiguration()
{
MapSingleType()。ToTable(" TaskDetail");
HasKey(d => new {d.TaskDetailID});
}
}
public class TaskDetailConfiguration : EntityConfiguration<TaskDetail>
{
public TaskDetailConfiguration()
{
MapSingleType().ToTable("TaskDetail");
HasKey(d => new { d.TaskDetailID });
}
}
DbContext代码:
DbContext code:
公共类CodeOnlyContext:DbContext
public class CodeOnlyContext : DbContext
{
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TaskDetailConfiguration());
modelBuilder.Configurations.Add(new TaskDetailConfiguration());
}
}
public DbSet< TaskDetail> TaskDetails {get;组; }
public DbSet<TaskDetail> TaskDetails { get; set; }
}
创建数据库后,生成的表名称为"TaskDetails"。 ,为什么?
After Created database,the generated table name is "TaskDetails",why?
提前致谢。
推荐答案
这是无参数MapSingleType重载的错误 在CTP4中,有两种方法可以解决它;
This is a bug in the parameterless MapSingleType overload in CTP4, there are two ways to work around it;
1。将MapSingleType调用移动到OnModelCreating方法;
1. Move the MapSingleType call into the OnModelCreating method;
public class CodeOnlyContext : DbContext
{
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new TaskDetailConfiguration());
modelBuilder.Entity<TaskDetail>().MapSingleType().ToTable("TaskDetail");
}
public DbSet<TaskDetail> TaskDetails { get; set; }
}
2。使用调用每个属性的MapSingleType的另一个重载;
2. Use the other overload of MapSingleType that calls out each property;
public class TaskDetailConfiguration : EntityConfiguration<TaskDetail>
{
public TaskDetailConfiguration()
{
MapSingleType(d => new { d.TaskDetailID, d.Details, ... }).ToTable("TaskDetail");
HasKey(d => new { d.TaskDetailID });
}
}
~Rowan
这篇关于代码优先自定义数据库架构映射错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!