C # Entity Framework Неверный столбец - PullRequest
0 голосов
/ 08 мая 2018

У меня есть модель:

public class ConstRouteFamily
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Key]
    public long Id { get; set; }

    public long RouteId { get; set; }
    public long FamilyId { get; set; }

    public virtual ICollection<Family> Families { get; set; }
} 

и таблица:

CREATE TABLE [dbo].[ConstRouteFamilies]
(
    [Id] [BIGINT] IDENTITY(1,1) NOT NULL,
    [RouteId] [BIGINT] NOT NULL,
    [FamilyId] [BIGINT] NULL,

    CONSTRAINT [PK_ConstRouteFamilies] 
        PRIMARY KEY CLUSTERED ([Id] ASC)
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[ConstRouteFamilies] WITH CHECK 
    ADD CONSTRAINT [FK_ConstRouteFamilies_ConstRoutes] 
        FOREIGN KEY([RouteId]) REFERENCES [dbo].[ConstRoutes] ([Id])
GO
ALTER TABLE [dbo].[ConstRouteFamilies] CHECK CONSTRAINT [FK_ConstRouteFamilies_ConstRoutes]
GO

ALTER TABLE [dbo].[ConstRouteFamilies] WITH CHECK 
    ADD CONSTRAINT [FK_ConstRouteFamilies_Families] 
        FOREIGN KEY([FamilyId]) REFERENCES [dbo].[Families] ([Id])
GO

ALTER TABLE [dbo].[ConstRouteFamilies] CHECK CONSTRAINT [FK_ConstRouteFamilies_Families]
GO

Теперь, когда я пытаюсь выполнить запрос:

var families = db.ConstRouteFamilies
                 .Where(crf => crf.RouteId.Equals(route.Id))
                 .ToList();

Я получаю исключение

Неверное имя столбца 'ConstRoute_Id'

Я посмотрел на сгенерированный SQL:

SELECT 
    1 AS [C1], 
    [Extent1].[Id] AS [Id], 
    [Extent1].[RouteId] AS [RouteId], 
    [Extent1].[FamilyId] AS [FamilyId], 
    [Extent1].[ConstRoute_Id] AS [ConstRoute_Id]
FROM 
    [dbo].[ConstRouteFamilies] AS [Extent1]

Откуда взялся этот столбец * 1019? И как мне удалить / исправить эту ошибку?

1 Ответ

0 голосов
/ 08 мая 2018

Я думаю, что это проблема внешнего ключа в таблице Семей. Вы можете указать внешний ключ как это -

     [ForeignKey("FamilyId")]
public virtual ICollection<Family> Families { get; set; }

Посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...