代码优先自定义数据库架构映射错误? [英] Code First Custom Database Schema Mapping Bug?

查看:70
本文介绍了代码优先自定义数据库架构映射错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,所有

 我想生成一个名为"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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆