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

本文关键字:存在 属性 错误 定义 | 更新日期: 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;}