EF 6代码头类生成命名和映射不正确

时间:2017-07-26 18:56:52

标签: entity-framework ef-code-first

我有一个现有数据库,其中包含一个表,我已添加了2个新列。

示例表:

CREATE TABLE [dbo].[Tasks](
    [TaskId] [int] IDENTITY(1,1) NOT NULL,
    [CategoryId] [int] NOT NULL,
    [ResolutionId] [int] NULL,
    [AmendedCategoryId] [int] NULL, -- New column
    [AmendedResolutionId] [int] NULL, -- New column
)

这些列(每个都是一个int)的外键关系与之前存在的2个列相同(" CategoryId"" AmendedCategoryId"每个FK到[TaskCategory]和" ResolutionId"和" AmendedResolutionId"每个FK到[TaskResolution])。

当我使用EF6 Code First为此生成C#数据访问类时,结果令人困惑(至少可以说)。

以下是EF正在制作的一个例子:

    modelBuilder.Entity<TaskCategory>()
        .HasMany(e => e.TaskCategory1)
        .WithOptional(e => e.TaskCategory2)
        .HasForeignKey(e => e.ParentCategoryId);

    modelBuilder.Entity<TaskCategory>()
        .HasMany(e => e.Tasks)
        .WithOptional(e => e.TaskCategory)
        .HasForeignKey(e => e.AmendedCategoryId);

    modelBuilder.Entity<TaskCategory>()
        .HasMany(e => e.Tasks1)
        .WithRequired(e => e.TaskCategory1)
        .HasForeignKey(e => e.CategoryId)
        .WillCascadeOnDelete(false);

导致以下结果:

  1. 新的&#34;修订版&#34;的类属性名称。列(例如:&#34; AmendedTaskCategory&#34;,&#34; AmendedTaskResolution&#34;)与 表中的列名,虽然&#34; AmendedTaskCategoryId&#34; 和&#34; AmendedTaskResolutionId&#34;名字DO匹配。相反,他们有 &#34; TaskCategory1&#34;和&#34; TaskResolution1&#34;为了他们的名字。
  2. &#34; modelBuilder.Entity&#34;生成的代码是映射 &#34;原&#34;列到新的等价物(例如:&#34; TaskCategory&#34;正在 映射到&#34; AmendedTaskCategory&#34;),并生成原始 属性保留为null(这会导致下游问题)。
  3. 为什么EF会产生&#34; 1&#34;和&#34; 2&#34;课程&amp; 属性?
  4. 如何正确地将实体框架6转换为&#34;&#34;使用&#34; Code First&#34;生成类和属性,从而生成类中的类和属性。 EF功能?

0 个答案:

没有答案