首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF Code-First复合“导航”键

EF Code-First复合“导航”键
EN

Stack Overflow用户
提问于 2011-09-01 01:48:14
回答 1查看 630关注 0票数 1

我已经搜索了已经回答的问题,但没有找到我的问题的答案。真为我感到羞耻。

我有这样的情况:

代码语言:javascript
复制
public class Content
{
    [Key]
    [StringLength(36, ErrorMessage="Must have 36 characters")]
    [Required(ErrorMessage="Must have a unique GUID")]
    public string GUID { get; set; }

    public virtual ICollection<RegionalInfo> RegionalInfo { get; set; }
}

public class RegionalInfo
{
    [Key]
    public virtual Content Content { get; set; }

    [Key]
    public virtual Region Region { get; set; }
}

public class Region
{
    [Key]
    [StringLength(5, ErrorMessage="ID must have 5 characters")]
    [Required]
    [RegularExpression(@"[a-z]{2}-[A-Z]{2}", ErrorMessage = "ID must be in ISO 639 standard")] 
    public string ID { get; set; }

    public string Country { get; set; }

    public string Language { get; set; }
}

但我不能让它起作用。EF说"RegionalInfo没有定义键“。

简而言之,我试图在这个类"RegionalInfo“上创建一个组合键,其中包括Content.GUID和Region.ID。

对于Contents表中的每个唯一内容,RegionalInfo表中将存在许多“翻译”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-01 04:57:13

我假设您使用的是DbContext。在这种假设下,您应该在RegionalInfo类中定义键,如下所示

代码语言:javascript
复制
public class RegionalInfo
{
    [Key]
    public String ContentId { get; set; }
    public virtual Content Content { get; set; }

    [Key]
    public string RegionId { get; set; }
    public virtual Region Region { get; set; }
}

在您的context类中,您可以执行以下操作:

代码语言:javascript
复制
    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        // Composite key definition
        modelBuilder.Entity<RegionalInfo>().HasKey(x => new { x.ContentId, x.RegionId });
        // And if I remember correctly this was required in order to do
        // var x = contentObject.RegionalInfo.Where(....) stuff
        modelBuilder.Entity<RegionalInfo>().HasRequired<Content>(x => x.Content).WithMany(x => x.RegionalInfo).HasForeignKey(x => x.ContentId);
    }

这应该会起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7261157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档