2012-05-31 88 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

相关问题