【问题标题】:Entity Framework Not Giving the correct name in the database实体框架未在数据库中提供正确的名称
【发布时间】:2013-01-15 21:58:13
【问题描述】:

我正在使用实体框架(用于学习)来创建数据表;但是,当我运行应用程序时,它会将数据库列名称创建为:AnaKategori_ANA_CATEGORY_ID。

为什么要这样做,因为我专门告诉它将该列命名为“ANA_CATEGORY_ID”?

下面是类文件内容。

[Table("CATEGORY")]
public class Kategori
{
    [Key]
    public Guid CATEGORY_ID { get; set; }
    [MaxLength(100)]
    public string CATEGORY { get; set; }
    [MaxLength(100)]
    public string CATEGORY_TR { get; set; }
    [Column("ANA_CATEGORY_ID")]
    public virtual AnaKategori AnaKategori { get; set; }

}

我在发布之前尝试了 boindiil 的答案(这是使用 ForeignKey 属性,我得到了这个错误:

'BusinessListingMVC.Models.Kategori' 类型的属性 'AnaKategori' 上的 ForeignKeyAttribute 是 无效。在依赖类型上找不到外键名称“ANA_CATEGORY_ID” BusinessListingMVC.Models.Kategori'。 Name 值应该是逗号分隔的外键属性名称列表。 说明:执行当前 Web 请求期间发生未处理的异常。 请查看堆栈跟踪以获取有关错误及其来源的更多信息 代码。

【问题讨论】:

  • 当您使用 ForeignKey 属性时,您的类中需要有两个字段,一个 int (ParentCategoryId) 和一个虚拟字段。

标签: c# frameworks entity code-first poco


【解决方案1】:

我发现了这个link,它指出这似乎是一个错误。在这种情况下,您必须使用 [ForeignKey] attribute 为其指定所需的名称:

[Table("CATEGORY")]
public class Kategori
{
    [Key]
    public Guid CATEGORY_ID { get; set; }
    [MaxLength(100)]
    public string CATEGORY { get; set; }
    [MaxLength(100)]
    public string CATEGORY_TR { get; set; }
    [Column("ANA_CATEGORY_ID")]
    public Guid ANA_CATEGORY_ID { get; set; }
    [ForeignKey("ANA_CATEGORY_ID")]
    public virtual AnaKategori AnaKategori { get; set; }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多