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

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

我使用 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 对象时插入正确的外键值。

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

添加

我忘了提及,在代码优先的情况下,EF 会查看类模型中的关联以在数据库中创建外键。

关于c# - 使用 Fluent API 为没有导航属性的实体定​​义外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524091/

相关文章:

c# - xmlns 到 WPF 类的映射在哪里完成?

entity-framework - EntityFramework 代码优先 : Why does Lazy Loading of Many to Many Reference fail?

entity-framework - Entity Framework 代码优先 : Adding to Many to Many relationship by ID

entity-framework - EF Code First + 延迟加载,投影没有按预期工作

c# - 将数字格式化为金钱

c# - 将访问 token 传递到 Azure 服务管理 (REST) 时被禁止

entity-framework - 如何在桌面应用程序中使用 DataAnnotations

c# - 使用 WinForms 的 Entity Framework UI 验证

entity-framework - 指定外键 Entity Framework 代码优先,Fluent Api

c# - 使用按钮更改 ViewModel 属性