实体框架复合键代码首先导致模型验证错误
我将 ASP.NET MVC 3 与 Entity Framework 4 代码优先方法结合使用,每次尝试使用模型上的 key 属性指定组合键时,都会收到此错误:
System.Data.Edm.EdmAssociationConstraint: : 中的属性数量 关系约束中的从属角色和主要角色必须是 完全相同。
我使用列属性来区分主键的顺序,如下所示:
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 事件添加逻辑,但如果可能的话,我宁愿使用模型上的关键属性。
I'm using ASP.NET MVC 3 with the Entity Framework 4 code first approach and every time I try to specify composite keys using the key attribute on my models, I get this error:
System.Data.Edm.EdmAssociationConstraint: : Number of Properties in
the Dependent and Principal Role in a relationship constraint must be
exactly identical.
I'm using the column attribute to differentiate ordering of the primary keys like so:
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();
}
}
I would like to know if there is another approach to creating composite keys, or perhaps there is a way to stop getting this error? I know that it's possible to add logic to the OnModelBuild event, but I'd rather use the key attributes on the model if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试从实体键中排除属性名称(我推荐)。或者,如果您确实需要将其作为密钥的一部分,则可以在所有实体中使用它。
Try to exclude property Name from the entity key (that I would recommend). Or, use it in all entities if you really need to make it part of the key.