【问题标题】:Prevent Entity Framework from inferring FK relationships防止实体框架推断 FK 关系
【发布时间】:2015-02-23 18:23:33
【问题描述】:

简化示例:我有以下 POCO:

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

public class Post
{
    public int Id {get;set;}
    public int BlogId {get;set;}
}

如何阻止实体框架(代码优先)将 Post.BlogId 上的外键关系推断为 Blog.Id?

这是一个非常简化的示例,但我有充分的理由不想在我的真实示例中推断 FK。

【问题讨论】:

  • 您是否正在寻找一种方法来强制外键,或者防止它被假定为外键?
  • 关系不一定是必需的(int?)。 stackoverflow.com/questions/10324231/…
  • 我希望完全阻止 EF 创建 FK,保留示例中的字段名称但没有关系

标签: ef-code-first code-first


【解决方案1】:

实际上 Post.BlogId 到 Blog.Id 的 FK 关系不会在您的示例中推断出来! ;)

要为您的代码获取 FK,它应该如下所示:

public class Blog
{
    public int Id { get; set; }
    public ICollection<Post> Posts { get; set; } // This forces FK
}

public class Post
{
    public int Id { get; set; }
    public int BlogId { get; set; } // Optional (changes default column name Blog_Id to BlogId)
}

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

public class Post
{
    public int Id { get; set; }
    public Blog Blog { get; set; } // This forces FK
    public int BlogId { get; set; } // Optional (changes default column name Blog_Id to BlogId)
}

public class Blog
{
    public int Id { get; set; }
    public ICollection<Post> Posts { get; set; } // This forces FK
}

public class Post
{
    public int Id { get; set; }
    public Blog Blog { get; set; } // This forces FK
    public int BlogId { get; set; } // Optional (changes default column name Blog_Id to BlogId)
}

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2013-02-13
    相关资源
    最近更新 更多