没有键定义错误,即使存在键属性
本文关键字:存在 属性 错误 定义 | 更新日期: 2023-09-27 18:34:53
我正在制作一个非常简单的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' 没有 键已定义。定义此实体类型的键。 ''tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'ExpenseType' 有 未定义密钥。定义此实体类型的键。 ''tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'ExpenseUser' has 未定义密钥。定义此实体类型的键。 ''tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet "费用"基于未定义键的"费用"类型。 ''tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet "费用类型"基于没有键的"费用类型" 定义。''tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet "费用用户"基于没有键的"费用用户"类型 定义。
我做错了什么?我的所有实体在各自的键前面都有 [Key],所有内容都会在没有错误或警告的情况下编译。只有在我实例化上下文后它才起作用,大概是在即将创建它的时候(它实际上还没有创建任何 SQL 表(
我在谷歌搜索中发现了这个问题。你必须使你的密钥属性。
[Key]
public int ExpenseId {get; set;}