1

「多」側でのみナビゲーションを使用して1対多の関係を構成しようとしていますが、EFに正しい列名を生成させることができないようです。

関連するスキーマは次のとおりです。

QuoteItem
  Id INT PRIMARY KEY

QuoteItemFiles
  Id INT PRIMARY KEY
  QuoteItemId INT NOT NULL
  FileId INT NOT NULL

Files
  FileID INT PRIMARY KEY (legacy naming convention)

そしてモデル:

public class QuoteItem
{
  public int Id { get; set; }
  public ICollection<QuoteItemFile> Attachments { get; set; }
}

public class QuoteItemFile
{
  public int Id { get; set; }
  public File File { get; set; }
  public QuoteItem QuoteItem { get; set; }
}

public class File
{
  public int FileID { get; set; }
}

私はこのような関係を構成しています:

public class QuoteItemMap()
{
  HasMany(x => x.Attachments)
    .WithRequired(x => x.QuoteItem)
    .Map(x => x.MapKey("QuoteItemId"))
    .WillCascadeOnDelete(true);
}

public QuoteItemFileMap()
{
  HasRequired(x => x.QuoteItem)
    .WithMany(x => x.Attachments)
    .Map(x => x.MapKey("QuoteItemId"))
    .WillCascadeOnDelete(true);
  HasRequired(x => x.File)
    .WithMany()
    .Map(x => x.MapKey("FileId")) <-- This isn't working
    .WillCascadeOnDelete(true);
}

QuoteItem.Attachments にアクセスしようとすると、" Invalid column name 'File_FileID'. "というメッセージが表示されます。

なぜ私のMapKey("FileId")指示に従わないのですか?

4

0 に答える 0