我在运行时收到此错误:
无法确定类型“X.Application.Models.ItemService”的复合主键排序。使用ColumnAttribute ...
但我确实有复合主键的排序设置!
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace X.Application.Models
{
public class ItemService
{
[Key]
[Column(Order = 0)]
[ForeignKey("Item")]
public int ItemId { get; set; }
[Key]
[Column(Order = 1)]
[ForeignKey("Service")]
public int ServiceId { get; set; }
[Required]
public virtual Item Item { get; set; }
[Required]
public virtual Service Service { get; set; }
}
}
我正在使用EntityFramework 6.1.3。我应该在哪里看到什么想法?
答案 0 :(得分:1)
我也遇到了这个问题,发现了一个不同的原因 - 我正在分享解决方案以防万一其他人受益。
我的解决方案中的一个项目是针对.NET 4.5.2但是当我查看引用时,我必须使用.Net 4.0版本;所有其他项目都针对.NET 4.5.2和适当的452版EF。在构建之后,EF的不匹配版本被放在输出目录中,我的应用程序无法正常工作。
当我更新项目(和nuget的packages.config)以引用EF的452版本时,问题就消失了。
答案 1 :(得分:0)
我修好了。
ItemService 引用的其他两个实体,服务和项,返回 ItemService ,集合属性称为 ItemServices 。
在我删除了这两个属性之后,这些属性是多对多关系的一部分,我不需要实际进入模型,但错误就消失了。
public class Service
{
[Key]
public int ServicId { get; set; }
// I deleted this line
public virtual List<ItemService> ItemServices { get; set; }
// etc...
}
public class Item
{
[Key]
public int ItemId { get; set; }
// I deleted this line too
public virtual List<ItemService> ItemServices { get; set; }
// etc...
}
感谢大家的投入。
答案 2 :(得分:0)
当.NET 4.5项目意外地从4.0 nuget包子文件夹引用了EntityFramework.dll时,我收到此错误。简单的软件包重新安装将解决这个问题。