【发布时间】:2011-10-31 19:27:08
【问题描述】:
我将 ASP.NET MVC 3 与 Entity Framework 4 代码优先方法一起使用,每次我尝试使用模型上的 key 属性指定复合键时,都会收到此错误:
System.Data.Edm.EdmAssociationConstraint: : 中的属性数 关系约束中的 Dependent 和 Principal Role 必须是 完全一样。
我使用 column 属性来区分主键的顺序,如下所示:
public class Game
{
[Key, Column(Order=0)]
public Guid GameId { get; set; }
[Key, Column(Order=1)]
public string Name { get; set; }
public string Description { get; set; }
public Game()
{
this.GameId = Guid.NewGuid();
}
}
我想知道是否有另一种创建复合键的方法,或者是否有办法停止出现此错误?我知道可以为 OnModelBuild 事件添加逻辑,但如果可能的话,我宁愿使用模型上的关键属性。
【问题讨论】:
-
看起来您正在使用关联的关键属性之一(GameId?)。 Game 与其他实体有什么关联?
-
我正在构建一个游戏数据库,其中包含来自 Xbox Live、PSN 和 Steam 的游戏。 Game 实体是每个网络游戏的超类。此外,我将使用 Game 实体来表示不特定于在线网络和旧游戏机(例如 SNES 或 NES)的游戏。
标签: c# asp.net-mvc-3 entity-framework-4 model composite-key