使用Fluent API为没有导航属性的实体定​​义外键

时间:2014-07-02 06:14:42

标签: c# entity-framework ef-code-first

我首先使用Entity Framework Code。

我的课程发布用户有关联:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Post 
{
    public int Id { get; set; }
    public string Text{ get; set; }
    public int UserId { get; set; }
    public virtual User User { get; set; }
}

上面的代码正确生成用户的主键( ID )和发布的外键( UserId ) >由于Code First Conventions。

但如果我不想在发布类中拥有导航属性(用户)该怎么办?删除

public virtual User User { get; set; } 

导致发布自动生成外键

可以使用Fluent API完成吗?

1 个答案:

答案 0 :(得分:3)

您可以从另一方建立关联:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Post> Posts { get; set; }
}

如果您不想要Posts属性,答案是:否,您不能。原因是EF必须能够跟踪对象模型中的关联 ,以便在插入Post个对象时插入正确的外键值。

此外,如果没有至少一个导航属性,您将无法在代码中关联PostUser

<强>加成

我忘了提到,在代码优先工作时,EF会查看类模型中的关联,以便在数据库中创建外键。