【问题标题】:Can I have EF code first TPH with a non abstract base class?我可以先使用非抽象基类的 EF 代码 TPH 吗?
【发布时间】:2023-04-08 20:42:02
【问题描述】:

在 SQL Server 中有一个由

定义的表
    CREATE TABLE [dbo].[ReportDataV2](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [DataTypeName] [nvarchar](max) NULL,
    [IsInplaceReport] [bit] NOT NULL,
    [PredefinedReportTypeName] [nvarchar](max) NULL,
    [Content] [varbinary](max) NULL,
    [DisplayName] [nvarchar](max) NULL,
    [ParametersObjectTypeName] [nvarchar](max) NULL,
 CONSTRAINT [PK_dbo.ReportDataV2] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

恰好是 Dev Express XAF 报告表。

在我的数据上下文中,我有

public DbSet<ReportDataV2> ReportDataV2 { get; set; }

我希望能够将 DataTypeName 字段视为鉴别器列,而不会干扰 ReportDataV2 在我的代码中已经工作的方式。

我尝试了以下操作,但 Entity Framework 检测到数据结构已更改,如果我生成迁移,我发现它正在尝试重新创建 ReportDataV2 表。

public class OrderCountReport2Configuration : EntityTypeConfiguration<ReportDataV2>
{
    public OrderCountReportConfiguration()
        : base()
    {
         ToTable("ReportDataV2", "dbo");

         HasKey(tp => tp.ID);

        Map<OrderCountReport>(m => m.Requires("DataTypeName").HasValue("OrderCountReport"));

    }
}

   protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new OrderCountReportConfiguration());
        base.OnModelCreating(modelBuilder);
    }
}

【问题讨论】:

标签: xaf ef-code-first-mapping


【解决方案1】:

鉴别器列必须有大小限制,就像索引列需要大小限制

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多