gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:26 24 4
gpt4 key购买 nike

我有这样的类(class):


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_Target_TargetInventory”的 FK 和字段“TargetInventoryId”。

对于 EF 4 它有效,但在 4.1 上它生成无效的字段名称“TargetInventory_Id”而不是“TargetInventoryId”。异常:

Load operation failed for query 'GetAll'. An error occurred while executing the command definition. See the inner exception for details. Inner exception message: Invalid column name 'TargetInventory_Id'.

有什么问题吗?

编辑 1

代码标签渲染不好(我想你能理解它的意思):modelBuilder.Conventions.Remove<<'IncludeMetadataConvention'>>();我以前没用过流利的,但它起作用了,我不想在主类之外有逻辑。现在我将尝试各种测试,因为我发现类似的代码在不同的类中工作。

最佳答案

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

关于c# - EF 4.1 生成字段 [Name]_Id 而不是 [Name]Id,FK 相关问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490848/

24 4 0