如何修复在模型生成过程中检测到的一个或多个验证错误

本文关键字:一个 错误 验证 模型 何修复 检测 过程中 | 更新日期: 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; }          
    }
}

现在它工作了。谢谢你

相关文章: