在我的控制器创建中出现错误消息,为这个实体类型定义键

本文关键字:实体 类型 定义 消息 创建 控制器 我的 错误 | 更新日期: 2023-09-27 17:49:59

当我尝试为我的数据库添加控制器时,我得到以下错误消息:

https://i.stack.imgur.com/5HyoN.png

Unable to retrieve metadata for 'MvcPractise.Models.Payments'. One or more validation errors were detected during model generation.
System.Data.Entity.Edm.EdmEntityType: : EntityType 'PaymentsContext' has no key defined. Define the key for this Entity type.
Systyem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet 'Payment' is based on the type 'Payment Context' that has no keys defined.

我对Visual Studio, c#和ASP MVC.net非常陌生,一直在遵循教程,但稍微改变属性以更好地适应我的任务需要。

我的代码如下:

using System;
using System.Collections.Generic;
using System.Data;
using System.Web.Mvc;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;
using MvcPractise.Models;
namespace MvcPractise.Models {
public class Payments {
    [Key]
    public String Email { get; set; }
    public String PaypalEmail { get; set; }
    public String CardHoldersName { get; set; }
    public String CardNumber { get; set; }
    public String ExpirationDate { get; set; }
    public String CardType { get; set; }

}
public class PaymentsContext : DbContext
{
    public DbSet<PaymentsContext> Payment { get; set; }
    public DbSet<Payments> Payments { get; set; }
}
}

如果有人可以帮助,我一直在搜索这个网站,并尝试了许多可能的解决方案,我已经重新创建了数据库,重写了代码,重新启动VS,添加了[Key]类型,你可以在代码中看到

在我的控制器创建中出现错误消息,为这个实体类型定义键

我认为问题出在PaymentsContext类中。你定义了一个DbSet Payment属性我认为你并不想这么做。PaymentsContext类只是DbContext的一个派生类,不应该是它自己的属性。下面的命令可以解决您的问题:

    public class PaymentsContext : DbContext
    {
            public DbSet<Payments> Payments { get; set; }
    }

class Payments重命名为class Payment

那么你的PaymentsContext应该是:
public class PaymentsContext: DbContext
{
   public DbSet<Payment> Payments { get; set; }
}