3

这可能是一个重复的 qn,但它无法得到这个场景的正确答案。我有以下表结构:

public class File
{
     public int FileId { get; set; } //PK
     public int VersionID { get; set; }

     public virtual ICollection<FileLocal> FileLLocalCollection { get; set; }
}

public class FileLocal
{
     public int FileId { get; set; } //PK, FK
     public int LangID { get; set; } //PK,FK
     public string FileName { get; set; }
}

我没有在这里包含第三个表(它基本上是 LangID (PK) & LangCode)我如何在 fluent Api 中指定这个映射,以便我可以为每个 File 对象加载“FileLLocalCollection”?

4

1 回答 1

4

映射的第一部分可以这样完成:

modelBuilder.Entity<File>()
    .HasMany(f => f.FileLocalCollection)
    .WithRequired()
    .HasForeignKey(fl => fl.FileId);

modelBuilder.Entity<FileLocal>()
    .HasKey(fl => new {fl.FileId, fl.LangId});

第二部分取决于您Lang的定义方式。例如,如果您将导航属性添加FileLocalLang您可以这样映射它:

modelBuilder.Entity<FileLocal>()
    .HasRequired(fl => fl.Lang)
    .WithMany()
    .HasForeignKey(fl => fl.LangId);
于 2012-06-13T20:20:16.940 回答