J'ai une table dans ma base de données appelée SEntries (voir ci-dessous l'instruction CREATE TABLE). Elle a une clé primaire, quelques clés étrangères et rien de spécial à ce sujet. J'ai beaucoup de tables dans ma base de données similaires à celle-ci, mais pour une raison quelconque, cette table s'est retrouvée avec une colonne "Discriminator" sur la classe Proxy EF.
Voici comment la classe est déclarée en 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 SEntries { get; set; }
...
}
Lorsque j'essaie d'ajouter une nouvelle ligne à cette table, j'obtiens l'erreur:
System.Data.SqlClient.SqlException: Nom de colonne non valide 'Discriminator'.
Ce problème ne se produit que si vous héritez de votre classe C# d'une autre classe, mais SEntry n'hérite de rien (comme vous pouvez le voir ci-dessus).
En plus de cela, une fois que j'obtiens l'info-bulle sur le débogueur lorsque je survole l'instance EMData pour la propriété SEntries, il affiche:
base {System.Data.Entity.Infrastructure.DbQuery} = {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...
Des suggestions ou des idées pour résoudre ce problème? J'ai essayé de renommer la table, la clé primaire et quelques autres choses, mais rien ne fonctionne.
Table SQL:
CRÉER 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
18 votes
Pour la personne suivante qui passera du temps à essayer de comprendre cela, ce qui s'est passé, c'est qu'à un autre endroit dans le code, j'avais une classe qui héritait de SEntry, bien que ce ne soit pas une classe qui serait jamais stockée dans la base de données. Donc tout ce que je devais faire était d'ajouter [NotMapped] en tant qu'attribut de cette classe !
1 votes
Je reçois cette erreur si je ne mets pas [NotMapped] sur la classe ApplicationUser dans Identitymodel.cs
0 votes
J'ai un problème similaire, posté en détail sur stackoverflow.com/questions/75333465/…