我使用 Entity Framework 代码优先。
我有一个类Post,与User关联:
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; }
}
上面的代码正确生成了User的主键(Id)和Post的外键(UserId) > 由于代码优先约定。
但是如果我不想在 Post 类中拥有导航属性 (User) 该怎么办?删除该内容
public virtual User User { get; set; }
导致未为发布自动生成外键。
这可以用 Fluent API 来完成吗?
最佳答案
您可以从另一端建立关联:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Post> Posts { get; set; }
}
如果您不想要 Posts
属性,答案是:不,您不能。原因是 EF 必须能够跟踪对象模型中的关联,以便在插入 Post
对象时插入正确的外键值。
此外,如果没有至少一个导航属性,您将无法在代码中关联 Post
和 User
。
添加
我忘了提及,在代码优先的情况下,EF 会查看类模型中的关联以在数据库中创建外键。
关于c# - 使用 Fluent API 为没有导航属性的实体定义外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524091/