【问题标题】:How to control the name of the foreign key relashionship object in EF Code First?如何在 EF Code First 中控制外键关系对象的名称?
【发布时间】:2013-12-19 05:10:22
【问题描述】:

我的 EF 代码中首先有两个实体,它们具有外键关系。

   public class Condition
   {
       public int Id { get; set; }

       public string Name { get; set; }

       public bool Active { get; set; }
   }

   public class ConditionGroup
   {
       public int Id { get; set; }

       public Condition Condition { get; set; }

       public int ConditionId { get; set; }
   }

这是我的实体图:

  public class ConditionGroupMap : EntityTypeConfiguration<ConditionGroup>
  {
    public ConditionGroupMap()
    {
        this.ToTable("ConditionGroup");

        this.HasKey(cg => cg.Id);
        this.HasRequired(cg => cg.Condition).WithMany(c => c.ConditionGroups).HasForeignKey(cg => cg.ConditionId).WillCascadeOnDelete(true);
    }
}

EF 将在数据库中创建具有以下名称的外键对象:

ConditionGroup_Condition。

问题是这个名称与数据库中的另一个对象发生冲突,原因超出了这个问题的范围。所以想问问有没有办法改这个名字?

【问题讨论】:

  • 我不会尝试首先针对现有数据库实现代码,你会遇到很多这样的问题。

标签: entity-framework


【解决方案1】:

您可以使用数据注释来代替 Fluent API:

public class ConditionGroup
{
  public int Id { get; set; }

  [ForeignKey("Condition")]
  public int ConditionId { get; set; }

  public Condition Condition { get; set; }
}

如果这不起作用,您可以随时使用 Column() 属性为其指定您想要的任何列名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多