2016-11-01 24 views
0

В есть таблица в SQL Server определяетсяМогу ли я иметь EF-код для первого TPH с не абстрактным базовым классом?

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 Экспресс 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); 
    } 
} 
+0

Я думаю, моя проблема может быть, что я хочу использовать столбец, NVARCHAR (Макс) в качестве дискриминатора колонка. Если я запустил миграцию, сгенерированный код имеет поле длиной 4000 –

+0

http://stackoverflow.com/questions/5053335/entity-framework-ctp5-code-first-how-do-i-pec-t-t- оф-discrimimator –

ответ

0

Столбец дискриминатор должен иметь ограничение на размер, так же, как индексированный столбец необходим предельный размер