Sai*_*rla 35 asp.net-mvc entity-framework
开发基本的ASP.net MVC 4应用程序.它是一个简单的产品目录应用程序,我在其中有2个数据库表('Category'和'Products')
"产品"表中有"类别ID"("类别"表中的主键)的外键引用.
当我运行该应用程序时,我收到错误消息(如下所示).
System.Data.Entity.Edm.EdmEntityType: : EntityType 'Category' has no key defined. Define the key for this EntityType.
System.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'Category' is based on type 'Category' that has no keys defined
Run Code Online (Sandbox Code Playgroud)
这看起来像新手的常见错误,我确实检查了所有相关的解决方案'实体键''没有定义键.但仍然我的问题没有解决,请帮助我理解这个问题,这个问题的正确解决方案是什么.
以下是我的模型类
Category.cs
namespace ChemicalStore.Models
{
public partial class Category
{
public int CatId { get; set; }
public string CatName { get; set; }
public string CatDescription { get; set; }
public List<Product> Product { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
Products.cs
namespace ChemicalStore.Models
{
public class Product
{
public int ProductId { get; set; }
public int CatId { get; set; }
public string ProductTitle { get; set; }
public string ProductPrice { get; set; }
public string ProductDescription { get; set; }
public string ProductPackage { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*nov 78
您应该在属性CatId之前添加属性[Key]:
using System.ComponentModel.DataAnnotations;
public partial class Category
{
[Key]
public int CatId { get; set; }
public string CatName { get; set; }
public string CatDescription { get; set; }
public List<Product> Product { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是EF只有在知道表的主键时才能工作.默认情况下,EF识别为名称为Id的主键属性.如果您的表有另一个主键,您可以使用属性[Key]标记它,或者使用Fluent配置设置Key.
Ric*_*uza 12
实体框架使用主键字段在生成的表上创建主键列.
它使用约定来获取此列的一些变体:
id或任何套管差异;ClassNameId任何套管差异;我可能会遗漏一些更多的约定,但这些是最常见的情况.
如果您没有任何具有此约定的字段,则需要使用以下属性标记所需的主键[Key]:
[Key]
public int CatId { get; set; }
Run Code Online (Sandbox Code Playgroud)
小智 8
我能够通过在我的key属性中添加一个setter来解决这个问题.我之前只有一个吸气剂.
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
小智 7
只需将[key]属性放在上面的id ..
[Table("employee")]
public class Employee
{
[Key]
public int Empno { set; get; }
public string Empname { set; get; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88083 次 |
| 最近记录: |