मेरे पास SENTries नामक मेरे डेटाबेस में एक तालिका है (CREATE तालिका कथन के नीचे देखें)। इसकी प्राथमिक कुंजी है, कुछ विदेशी कुंजी और इसके बारे में कुछ खास नहीं है। मेरे डेटाबेस में मेरे पास कई टेबल हैं, लेकिन किसी कारण से, यह तालिका ईएफ प्रॉक्सी क्लास पर "डिस्कमिनेटर" कॉलम के साथ समाप्त हुई।ईएफ कोड पहला "अमान्य कॉलम नाम 'डिस्कमिनेटर'" लेकिन कोई विरासत
System.Data.SqlClient.SqlException: Invalid column name 'Discriminator'.
यह समस्या केवल तभी होती है:
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; }
...
}
जब मैं उस मेज पर एक नई पंक्ति जोड़ने की कोशिश, मैं त्रुटि मिलती है:
यह कैसे वर्ग सी # में घोषित किया जाता है आप किसी अन्य वर्ग से अपने सी # वर्ग को विरासत में ले रहे हैं, लेकिन सेन्ट्री किसी भी चीज़ से विरासत में नहीं है (जैसा कि आप ऊपर देख सकते हैं)।
कि के अलावा, एक बार मैं डिबगर पर उपकरण की नोक मिलता है जब मैं संतरियों संपत्ति के लिए EMData उदाहरण पर माउस, यह प्रदर्शित करता है:
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...
किसी भी सुझाव या विचार जहां को पाने के लिए इस मुद्दे के नीचे? मैंने टेबल, प्राथमिक कुंजी और कुछ अन्य चीजों का नाम बदलने की कोशिश की, लेकिन कुछ भी काम नहीं करता है।
एसक्यूएल-तालिका:
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
अगले व्यक्ति के लिए जो इसे समझने का प्रयास करने में कुछ समय व्यतीत करेगा, क्या हुआ कि कोड पर किसी अन्य स्थान पर, मेरे पास एक वर्ग था जो सेन्ट्री से विरासत में मिला, भले ही यह एक वर्ग न हो कभी डीबी पर संग्रहीत किया जाएगा। तो मुझे बस इतना करना था कि उस वर्ग की विशेषता के रूप में [NotMapped] को जोड़ना था! –