在我的控制器创建中出现错误消息,为这个实体类型定义键
本文关键字:实体 类型 定义 消息 创建 控制器 我的 错误 | 更新日期: 2023-09-27 17:49:59
当我尝试为我的数据库添加控制器时,我得到以下错误消息:
https://i.stack.imgur.com/5HyoN.pngUnable 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
public class PaymentsContext: DbContext
{
public DbSet<Payment> Payments { get; set; }
}