【发布时间】:2014-01-20 02:00:58
【问题描述】:
假设我有以下实体:
public class Parent
{
public int Id { get; set; }
}
public class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
}
什么是代码优先流式 API 语法来强制在数据库中创建 ParentId,并具有对 Parent 表的外键约束,不需要导航属性?
我知道如果我将导航属性 Parent 添加到 Child,那么我可以这样做:
modelBuilder.Entity<Child>()
.HasRequired<Parent>(c => c.Parent)
.WithMany()
.HasForeignKey(c => c.ParentId);
但在这种特殊情况下,我不想要导航属性。
【问题讨论】:
-
我认为仅使用 EF 是不可能的,您可能需要在手动迁移中使用一些原始 SQL 来设置它
-
@LukeMcGregor 这就是我所担心的。如果你做出这个答案,我很乐意接受它,假设它是正确的。 :-)
-
没有导航属性有什么具体原因吗?将导航属性设为私有为您工作 - 在实体外部不可见,但会取悦 EF。 (注意我还没有尝试过,但我认为这应该可行 - 看看这篇关于映射私有属性的帖子romiller.com/2012/10/01/…)
-
好吧,我不想要它,因为我不需要它。我不喜欢为了满足框架的要求而在设计中添加额外的不必要的东西。放入导航道具会杀了我吗?不。事实上,这就是我目前所做的。
-
您总是需要至少一侧的导航属性来建立关系。欲了解更多信息stackoverflow.com/a/7105288/105445
标签: entity-framework ef-code-first