2017-02-13 13 views
0

エンティティフレームワークv6.1.3を使用してデータをバインドしようとしていますが、このエラーメッセージが表示されます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;  
    } 

とDB中:私は、次のアプローチを試してみた

(私は複合キーを持っています)私は

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

関連する問題