EF Code First "Ungültige Spalte name 'Diskriminator'", aber keine Vererbung

Ich habe eine Tabelle in meiner Datenbank namens Wachen (siehe unten die CREATE TABLE-Anweisung). Es hat einen Primärschlüssel, ein paar der Fremdschlüssel und nichts besonderes. Ich habe viele Tabellen in meiner Datenbank, ähnlich, aber für einige Grund, diese Tabelle endete mit einem "Diskriminator" - Spalte auf der EF-Proxy-Klasse.

Dies ist, wie die Klasse deklariert ist, in C#:

public class SEntry
{
    public long SEntryId { get; set; }

    public long OriginatorId { get; set; }
    public DateTime DatePosted { get; set; }
    public string Message { get; set; }
    public byte DataEntrySource { get; set; }
    public string SourceLink { get; set; }
    public int SourceAppId { get; set; }
    public int? LocationId { get; set; }
    public long? ActivityId { get; set; }
    public short OriginatorObjectTypeId { get; set; }
}

public class EMData : DbContext
{
    public DbSet<SEntry> SEntries { get; set; }
            ...
    }

Wenn ich versuche, fügen Sie eine neue Zeile an die Tabelle, erhalte ich die Fehlermeldung:

System.Data.SqlClient.SqlException: Invalid column name 'Discriminator'.

Dieses problem tritt nur auf, wenn Sie Erben von Ihrem C# - Klasse von einer anderen Klasse, aber SEntry ist keine Erben von etwas (wie man oben sehen kann).

Zusätzlich zu, dass, sobald ich den tool-tip auf den debugger, wenn ich mit der Maus über die EMData Instanz für die Wachen Eigenschaft, zeigt es:

base {System.Data.Entity.Infrastructure.DbQuery<EM.SEntry>} = {SELECT 
[Extent1].[Discriminator] AS [Discriminator], 
[Extent1].[SEntryId] AS [SEntryId], 
[Extent1].[OriginatorId] AS [OriginatorId], 
[Extent1].[DatePosted] AS [DatePosted], 
[Extent1].[Message] AS [Message], 
[Extent1].[DataEntrySource] AS [DataE...

Irgendwelche Vorschläge oder Ideen, wo man die Unterseite dieses Problem? Ich habe versucht, die Umbenennung der Tabelle, den Primärschlüssel und ein paar andere Dinge, aber nichts funktioniert.

SQL-Tabelle:

CREATE TABLE [dbo].[SEntries](
[SEntryId] [bigint] IDENTITY(1125899906842624,1) NOT NULL,
[OriginatorId] [bigint] NOT NULL,
[DatePosted] [datetime] NOT NULL,
[Message] [nvarchar](500) NOT NULL,
[DataEntrySource] [tinyint] NOT NULL,
[SourceLink] [nvarchar](100) NULL,
[SourceAppId] [int] NOT NULL,
[LocationId] [int] NULL,
[ActivityId] [bigint] NULL,
[OriginatorObjectTypeId] [smallint] NOT NULL,
CONSTRAINT [PK_SEntries] PRIMARY KEY CLUSTERED 
(
[SEntryId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,       ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[SEntries]  WITH CHECK ADD  CONSTRAINT [FK_SEntries_ObjectTypes] FOREIGN KEY([OriginatorObjectTypeId])
REFERENCES [dbo].[ObjectTypes] ([ObjectTypeId])
GO

ALTER TABLE [dbo].[SEntries] CHECK CONSTRAINT [FK_SEntries_ObjectTypes]
GO

ALTER TABLE [dbo].[SEntries]  WITH CHECK ADD  CONSTRAINT [FK_SEntries_SourceApps] FOREIGN KEY([SourceAppId])
REFERENCES [dbo].[SourceApps] ([SourceAppId])
GO

ALTER TABLE [dbo].[SEntries] CHECK CONSTRAINT [FK_SEntries_SourceApps]
GO
Für die nächste person, die verbringen einige Zeit versucht herauszufinden, was passiert ist, ist, dass in einem anderen Ort auf dem code, hatte ich eine Klasse, die geerbt von SEntry, obwohl es nicht eine Klasse, die jemals gespeichert werden, auf die DB. Also alles, was ich tun musste, war zu fügen [NotMapped] als Attribut der Klasse!
Ich bekomme diesen Fehler, wenn ich nicht setzen [NotMapped] auf ApplicationUser Klasse in Identitymodel.cs

InformationsquelleAutor Marcelo Calbucci | 2011-07-01

Schreibe einen Kommentar