2011-08-08 56 views
8

我剛剛升級到最新的EF 4.1代碼優先使用的NuGet現在我收到關於我的映射錯誤。EF 4.1的EntityType沒有密鑰 - 複合

我有這個類

public class UserApplication 
{ 
    [Key, Column(Order = 0)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int UserId { get; set; } 

    [Key, Column(Order = 1)] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int ApplicationId { get; set; } 

    [ForeignKey("ApplicationId")] 
    public virtual Application Application { get; set; } 

    public DateTime SubscribedDate { get; set; } 
} 

而且我收到此錯誤:

System.Data.Edm.EdmEntityType: : EntityType 'UserApplication' has no key defined. Define the key for this EntityType. 
System.Data.Edm.EdmEntitySet: EntityType: EntitySet 'UserApplications' is based on type 'UserApplication' that has no keys defined. 

我可以然而使它工作使用這樣

modelBuilder.Entity<UserApplication>().HasKey(obj => new {obj.UserId, obj.ApplicationId }); 

的流暢API怎麼來EF不拿起我已經使用註釋定義組合鍵? 我敢肯定,這與使用舊的EF 4.1工作。

+0

有你你有沒有找到一個解決同樣的問題 – Pandincus

+0

不,我沒有在最後,我決定來定義所有使用DbModelBuilder – kfuglsang

+0

同樣的問題的關鍵,有趣的部分是我有兩個類複合鍵,一個彙總,其他沒有.. –

回答

1

作品與實體框架6.1.3。我還添加了基本Application類,但所用的UserApplication的是(除了DatabaseGenerat 選項生成該SQL:。

CREATE TABLE [dbo].[UserApplication] (
    [UserId] [int] NOT NULL, 
    [ApplicationId] [int] NOT NULL, 
    [SubscribedDate] [datetime] NOT NULL, 
    CONSTRAINT [PK_dbo.UserApplication] PRIMARY KEY ([UserId], [ApplicationId]) 
) 


CREATE TABLE [dbo].[Application] (
    [ApplicationId] [int] NOT NULL IDENTITY, 
    [Name] [nvarchar](max), 
    CONSTRAINT [PK_dbo.Application] PRIMARY KEY ([ApplicationId]) 
) 
2

我已經解決了問題,我剛剛加入額外的鍵列:?。

public class AlbumUser 
{ 
    public Album Album 
    { 
     get; 
     set; 
    } 

    public IdentityUser User 
    { 
     get; 
     set; 
    } 

    [Key] 
    [Column(Order = 0)] 
    [StringLength(128)] 
    public string UserId 
    { 
     get; 
     set; 
    } 

    [Key] 
    [Column(Order = 1)] 
    public int AlbumId 
    { 
     get; 
     set; 
    } 
} 
+1

我是個問題不知道這真的回答了這個問題。 –

相關問題