如何修复在模型生成过程中检测到的一个或多个验证错误
本文关键字:一个 错误 验证 模型 何修复 检测 过程中 | 更新日期: 2023-09-27 17:50:54
在模型生成过程中检测到一个或多个验证错误:
SportsStore.Domain.Concrete。shop_Products:: EntityType 'shop_Products'没有定义键。定义EntityType的键
Products: EntityType: EntitySet 'Products'是基于没有定义键的类型'shop_Products'。
public ViewResult Index()
{
ProductsListViewModel viewModel = new ProductsListViewModel
{
Products = repository.Products
.Where(p => p.CategoryId == 100)
.OrderByDescending(p=>p.ProductID)
.Take(5)
};
return View(viewModel);
}
@foreach (var p in Model.Products)
{
<a href="">@p.ProductName</a>
}
public class shop_Products {
public int ProductID { get; set; }
public string ProductName { get; set; }
public int CategoryId { get; set; }
public Nullable<int> CategoryPropertyId { get; set; }
public string PropertyValue { get; set; }
public Nullable<int> ProductBrandId { get; set; }
public Nullable<decimal> MarketPrice { get; set; }
public decimal Price { get; set; }
public Nullable<decimal> UserPrice { get; set; }
public string TitleKeyword { get; set; }
public string MetaKeyword { get; set; }
public string MetaDescription { get; set; }
public string PhotoName { get; set; }
public string PhotoPath { get; set; }
public string smallPhotos { get; set; }
public string BigPhotos { get; set; }
public string URL { get; set; }
public double Discount { get; set; }
public int Inventory { get; set; }
public string ShortDesc { get; set; }
public bool IsAccessories { get; set; }
public bool IsGroup { get; set; }
public bool IsTopService { get; set; }
public string Accessorices { get; set; }
public string PeopleGroup { get; set; }
public string TopService { get; set; }
public string Contents { get; set; }
public string Parameter { get; set; }
public string PackingList { get; set; }
public string Service { get; set; }
public string Professional { get; set; }
public bool IsParameter { get; set; }
public bool IsPackingList { get; set; }
public bool IsService { get; set; }
public bool IsProfessional { get; set; }
public Nullable<bool> IsEnable { get; set; }
public Nullable<bool> IsCommend { get; set; }
public Nullable<bool> IsTop { get; set; }
public Nullable<bool> IsBest { get; set; }
public string ProductBrandType { get; set; }
public string Manufacturer { get; set; }
public string Makein { get; set; }
public string weight { get; set; }
public System.DateTime InputTime { get; set; }
public Nullable<int> Sort { get; set; }
public Nullable<int> SeeCount { get; set; }
}
我做了一些这样的,工作得很好。但这些都是错误的。有人能帮帮我吗?
按照约定EF使用Id
或[type name]Id
字段作为主键。详见:http://msdn.microsoft.com/en-us/library/system.data.entity.modelconfiguration.conventions.idkeydiscoveryconvention%28v=vs.103%29.aspx
您的类型命名为shop_Products
,但您将键设置为ProductID
(假设)意味着它无法根据约定找到一个。因此,您可以更改字段名称或类型名称,或者在ProductID
之上添加数据注释[Key]
,如下所示:
[Key]
public int ProductID { get; set; }
将此命名空间ref System.ComponentModel.DataAnnotations
添加到您的模型中,然后在id属性上方添加[Key]
注释
命名空间:using System.ComponentModel.DataAnnotations.Schema;
[Key] public int ProductID { get; set; }
您也可以将productID重命名为id
public int id {get; set;}
这是我的代码为这种类型的问题在asp.net mvc
之前using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace glostars.Models
{
public class WeeklyTagged
{
public int TaggedId { get; set; }
}
}
后using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; //added this line
using System.Linq;
using System.Web;
namespace glostars.Models
{
public class WeeklyTagged
{
[Key] //and this line
public int TaggedId { get; set; }
}
}
现在它工作了。谢谢你