我有这样的课程:
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' >>(); 我之前没有使用过流利,它有效,我不想在主类之外有逻辑。 现在我将尝试各种测试,因为我发现类似的代码在不同的类中工作。
答案 0 :(得分:0)
你要删除什么约定?不要触及惯例。他们负责FK属性与导航属性的自动配对,他们还负责将数据注释转换为映射。如果您的代码意味着要删除所有约定,则必须使用流畅的API配置所有约定。