2012-05-31 87 views
2

我想用Code-First創建一個sdf,但是我得到的錯誤是沒有爲我的表定義密鑰,並且無法理解爲什麼。System.Data.Entity.Edm.EdmEntityType沒有定義密鑰

我有以下類別: -

public class Article 
{ 
    [Key] 
    public int ArticleID; 

    //[Display(Name = "Title")] 
    //[MaxLength(255)] 
    //[Required(ErrorMessage="Title is required")] 
    public string ArticleTitle; 

    //[Display(Name = "Date")] 
    //[DisplayFormat(DataFormatString = "{0:#.#}", ApplyFormatInEditMode = true, NullDisplayText = "")] 
    //[Required(ErrorMessage = "Date is required")] 
    public DateTime ArticleDate; 

    //[Display(Name = "Text")] 
    //[Required(ErrorMessage = "Text is required")] 
    public string ArticleText; 

    //[Display(Name = "Source")] 
    public string ArticleSource; 

    //[Display(Name = "Category")] 
    public int CategoryID { get; set; } 

    public virtual Category Category { get; set; } 

} 

public class Category 
{ 
    [Key] 
    public int CategoryID; 

    [Display(Name = "Category Title")] 
    [MaxLength(255)] 
    [Required(ErrorMessage = "Category Title is required")] 
    public string CategoryTitle; 

} 

public class CommonsContext : DbContext 
{ 
    public DbSet<Article> Articles { get; set; } 
    public DbSet<Category> Categories { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 

     //A one-to-one relationship between the Article and Category tables. 
     modelBuilder.Entity<Article>().HasRequired(x => x.Category); 
    } 

} 

,並在web.config中: -

<add name="CommonsContext" connectionString="Data Source=|DataDirectory|Personal.sdf" providerName="System.Data.SqlServerCe.4.0" /> 

當我瀏覽到App_Data文件夾,我甚至不能看到Personal.sdf,所以這意味着它甚至沒有創建。

我在做什麼錯?目前還無法弄清楚。

感謝您的幫助和時間

回答

5

可能是因爲你還沒有定義爲您的關鍵屬性

public int ArticleID { get; set; } 

public int CategoryID { get; set; } 
+0

噢your're權阿爾奇爾getter和setter方法!有我面前:(謝謝你的指出! – Johann

+0

@Johann歡迎:) – archil

相關問題