定义两个外键在实体框架的主键 [英] Defining two foreign keys as primary key in Entity Framework

查看:391
本文介绍了定义两个外键在实体框架的主键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在实体框架,我想用两个外键的另一个实体类型的主键。

In Entity Framework, I'd like to use two foreign keys as primary key of another entity type.

public class CustomerExtensionValue {

    // Values for extended attributes of a customer
    [Key]
    [Column(Order = 0)]
    public Customer Customer { get; set; }

    [Key]
    [Column(Order = 1)]
    public CustomerExtension Extension { get; set; }

    [Required]
    public string Value { get; set; }
}

然而,这给了我一把钥匙将丢失的错误。 \\ tSystem.Data.Entity.Edm.EdmEntityType:的EntityType'CustomerExtensionValue没有定义键。定义此的EntityType关键。

我知道我可以定义两个拿着引用的实体类型的主键属性。是Visual Studio中没有足够的智慧用​​在自己的主键?

I'm know I could define two more attributes holding the primary keys of the referenced entity types. Is Visual Studio not smart enough to use their primary keys on his own?

推荐答案

主键始终必须通过实体类标量属性进行定义。你不能单靠导航属性指的PK。在你的模型像这样的定义是必需的:

Primary keys always must be defined by scalar properties in the entity class. You cannot refer to the PKs by navigation properties alone. In your model a definition like this is required:

public class CustomerExtensionValue {

    [Key, ForeignKey("Customer"), Column(Order = 0)]
    public int CustomerId { get; set; }

    [Key, ForeignKey("Extension"), Column(Order = 1)]
    public int ExtensionId { get; set; }

    public Customer Customer { get; set; }
    public CustomerExtension Extension { get; set; }

    [Required]
    public string Value { get; set; }
}

这篇关于定义两个外键在实体框架的主键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆