EF 4.1生成字段[Name] _Id而不是[Name] Id,FK相关问题

时间:2011-06-27 09:23:12

标签: c# entity-framework foreign-keys

我有这样的课程:


public class Target
{
    [Key]
    [Column("TargetId")]
    public Guid Id { get; set; }

    [ForeignKey("TargetInventory")]
    public Guid? TargetInventoryId { get; set; }
    public virtual TargetInventory TargetInventory { get; set; }
}

在DbContext上只有这个:


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove();
}

在数据库中,我有FK名为'FK_Target_TargetInventory'和字段'TargetInventoryId'。

使用EF 4它可以工作,但在4.1上它会生成无效的字段名称'TargetInventory_Id'而不是'TargetInventoryId'。例外:

查询'GetAll'的加载操作失败。执行命令定义时发生错误。有关详细信息,请参阅内部异常内部异常消息:无效的列名称“TargetInventory_Id”。

可能出现什么问题?

编辑1

代码标记渲染效果不佳(我认为你可以理解它的含义): modelBuilder.Conventions.Remove<< 'IncludeMetadataConvention' >>(); 我之前没有使用过流利,它有效,我不想在主类之外有逻辑。 现在我将尝试各种测试,因为我发现类似的代码在不同的类中工作。

1 个答案:

答案 0 :(得分:0)

你要删除什么约定?不要触及惯例。他们负责FK属性与导航属性的自动配对,他们还负责将数据注释转换为映射。如果您的代码意味着要删除所有约定,则必须使用流畅的API配置所有约定。