实体框架复合键代码首先导致模型验证错误

发布于 2024-12-13 06:05:24 字数 663 浏览 3 评论 0原文

我将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2024-12-20 06:05:24

尝试从实体键中排除属性名称(我推荐)。或者,如果您确实需要将其作为密钥的一部分,则可以在所有实体中使用它。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文