1

我使用的是 EF 6 Code First,我不明白为什么没有为我的模型的属性创建一列。

这是第一堂课:

    public class Original
    {
    public int ID { get; set; }
    public string Nom { get; private set; }
    public Historique Historique { get; private set; }
    public Traduction Traduction { get; private set; }
    }

这是第二节课:

   public class Traduction
   { 
    public int ID { get; set; }
    public Utilisateur Traducteur { get; private set; }
    public Original Original { get; private set; }
    public string Content { get; private set; }
   }

EF 不会为 Traduction 和 Original 创建 FK 列。(Traduction 表不包含 Original 的 FK 列,反之亦然)但它完美地创建了所有其他列和 FK。

我正在使用 Fluent API 来建立关系。我尝试过依赖自动约定,并明确配置与以下的关系:

   modelBuilder.Entity<Original>().HasRequired(o => o.Traduction).WithRequiredPrincipal(t=>t.Original).WillCascadeOnDelete(true);

但仍未创建列。

感谢您的帮助

更新

我不知道它是否有用,但我想添加一个信息,我的 Dbset 在上下文类中定义如下:

public DbSet<Traduction> Traductions { get; set; }
public DbSet<Original> Originaux { get; set; }

“Originaux”如果是“Originals”的法语复数。但是我注意到 EF 创建的表被命名为“Originals”,并且不遵循 DbSet 的名称。我不知道,也许这可能是问题的原因。

4

1 回答 1

0

正如 Dismissile 所说,EF 不会创建额外的列来保存外键,因为它是一对一的关系。这是一种正常的行为,实际上并没有错。

于 2014-07-31T05:42:09.497 回答