2017-02-13 8 views
0

Я пытаюсь связать свои данные с помощью сущности framework v6.1.3, но я получаю это сообщение об ошибке EntityType не определил ключ. Определите ключ для этого EntityType. (Я имею составной ключ)Ошибка «EntityType не имеет ключа» для составных клавиш

Я попытался следующие подходы:

public class CommunicationCollection 
{ 
    [Key, Column(Order = 0)] 
    [ForeignKey("FK_CommunicationCollection_Communication")] 
    public Guid CommunicationId; 

    [Key, Column(Order = 1)] 
    [ForeignKey("FK_CommunicationCollection_Collection")] 
    public Guid CollectionId; 

} 

и этот

public class CommunicationCollection 
    { 
     [Key, Column(Order = 0)] 
     [ForeignKey("FK_CommunicationCollection_Communication")] 
     public Guid CommunicationId; 

     [Key, Column(Order = 1)] 
     [ForeignKey("FK_CommunicationCollection_Collection")] 
     public Guid CollectionId; 

     public virtual Communication Communication { get; set; } 
     public virtual Collection Collection { get; set; } 

    } 

, а также этот

public class CommunicationCollection 
    { 
     [Key, Column(Order = 0)] 
     public Guid CommunicationId; 

     [Key, Column(Order = 1)] 
     public Guid CollectionId;  
    } 

и в БД У меня есть

CREATE TABLE [CommunicationCollection](
    [CommunicationId] [uniqueidentifier] NOT NULL, 
    [CollectionId] [uniqueidentifier] NOT NULL, 
CONSTRAINT [PK_CommunicationCollection] PRIMARY KEY CLUSTERED 
(
    [CommunicationId] ASC, 
    [CollectionId] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY] 
) ON [PRIMARY] 

GO 

ALTER TABLE [CommunicationCollection] WITH CHECK ADD CONSTRAINT [FK_CommunicationCollection_Collection] FOREIGN KEY([CollectionId]) 
REFERENCES [Collection] ([CollectionId]) 
GO 

ALTER TABLE [CommunicationCollection] CHECK CONSTRAINT [FK_CommunicationCollection_Collection] 
GO 

ALTER TABLE [CommunicationCollection] WITH CHECK ADD CONSTRAINT [FK_CommunicationCollection_Communication] FOREIGN KEY([CommunicationId]) 
REFERENCES [Communication] ([CommunicationId]) 
GO 

ALTER TABLE [CommunicationCollection] CHECK CONSTRAINT [FK_CommunicationCollection_Communication] 
GO 

Любая идея, что мне не хватает? Спасибо большое!

ответ

2

С EF все должно быть свойствами, а не просто «равными» переменными. Это необходимо, чтобы EF мог подключаться к этим методам.

Так как это:

public Guid CommunicationId { get; set; } 
public Guid CollectionId { get; set; } 

Забыв сделать это вызывает все виды проблем, которые могут быть трудно проследить до фактической причины, как вы только что столкнулись.

+0

спасибо! он решил мою проблему – WNB