没有键定义错误,即使Key属性存在

时间:2013-10-10 06:28:43

标签: c# sql entity-framework asp.net-mvc-4

我正在制作一个非常简单的MVC应用程序来管理一些家庭用品。之前,我总是在MVC模型生成器(GUI事物)中创建我的数据模型,或者导入已经创建的SQL表。

这一次,我想用代码优先的方法来做。

我现在举一个实体的例子:

 public class Expense {

    [Key]
    public int ExpenseId;

    public double ExpenseValue;
    public DateTime ExpenseDate;
    public string ExpenseDescription;

    public ExpenseType ExpenseType;
    public Currency ExpenseCurrency;

    public List<ExpenseUser> Users;

}

我的DbContext派生对象:

public class HawsContext : DbContext {

    public DbSet<Expense> Expenses { get; set; }
    public DbSet<ExpenseType> ExpenseTypes { get; set; }
    public DbSet<ExpenseUser> ExpenseUsers { get; set; }

    public ExpenseUser GetUserByUserName(string userName) {
        return ExpenseUsers.Where(u => u.UserName == userName).FirstOrDefault();
    }

}

每当我实例化对象时,我都会收到以下错误:

  

在模型生成期间检测到一个或多个验证错误:

     

\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'Expense'没有   键定义。定义此EntityType的键。   \ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'ExpenseType'具有   没有键定义。定义此EntityType的键。   \ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType'ExpenseUser'具有   没有键定义。定义此EntityType的键。   \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet   “费用”基于没有定义键的“费用”类型。   \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet   'ExpenseTypes'基于没有键的'ExpenseType'类型   定义。 \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet   'ExpenseUsers'基于没有键的'ExpenseUser'类型   定义

我做错了什么?我的所有实体都在其各自的键前面有[Key],所有内容都被编译而没有错误或警告。它只在我实例化上下文后才起作用,大概是在它即将创建时(它实际上还没有创建任何SQL表)

1 个答案:

答案 0 :(得分:3)

我在谷歌搜索中透露了这个问题。您必须创建关键属性。

[Key]
public int ExpenseId {get; set;}