我正在制作一个非常简单的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表)
答案 0 :(得分:3)
[Key]
public int ExpenseId {get; set;}