Ядро Entity Framework, генерирующее некорректный SQL при обновлении - PullRequest
0 голосов
/ 29 мая 2019

У меня есть следующие модели, ImprovementNotice, которые могут содержать список ImprovementNoticeFiles:

public class ImprovementNotice
{
    public ImprovementNotice() {
        this.ImprovementNoticeFiles = new List<ImprovementNoticeFile>();
    }

    [Key]
    public int ImprovementNoticeId { get; set; }

    public List<ImprovementNoticeFile> ImprovementNoticeFiles {get; set;}
}

public class ImprovementNoticeFile
{
    [Key]
    public int ImprovementNoticeFileId { get; set; }

    [MaxLength(128)]
    public string Filename { get; set; }

    public int ImprovementNotice_ImprovementNoticeId { get; set; }

    [JsonIgnore]
    [ForeignKey("ImprovementNotice_ImprovementNoticeId")]
    public virtual ImprovementNotice ImprovementNotice { get; set; }
}

Определение моего контекста:

public virtual DbSet<ImprovementNotice> ImprovementNotices { get; set; }
public virtual DbSet<ImprovementNoticeFile> ImprovementNoticeFiles { get; set; }

Я получаю сообщение об ошибке при обновлении команды SaveChanges Недопустимое имя объекта "ImprovementNoticeFile".

SQL, который генерируется:

fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (277ms) [Parameters=[@p0='filename.pdf' (Size = 128), @p1='1010'], CommandType='Text', CommandTimeout='30']
      SET NOCOUNT ON;
      INSERT INTO [ImprovementNoticeFile] ([Filename], [ImprovementNotice_ImprovementNoticeId])
      VALUES (@p0, @p1);
      SELECT [ImprovementNoticeFileId]
      FROM [ImprovementNoticeFile]
      WHERE @@ROWCOUNT = 1 AND [ImprovementNoticeFileId] = scope_identity();

Имя таблицы должно быть ImprovementNoticeFiles с s в конце, но сгенерированный SQL пытается вставить в ImprovementNoticeFile.

Обновление

Это код первой миграции, который создал таблицу:

CreateTable(
    "dbo.ImprovementNoticeFiles",
    c => new
        {
            ImprovementNoticeFileId = c.Int(nullable: false, identity: true),
            Filename = c.String(maxLength: 128),
            ImprovementNotice_ImprovementNoticeId = c.Int(nullable: false),
        })
    .PrimaryKey(t => t.ImprovementNoticeFileId)
    .ForeignKey("dbo.ImprovementNotices", t => t.ImprovementNotice_ImprovementNoticeId, cascadeDelete: true)
    .Index(t => t.ImprovementNotice_ImprovementNoticeId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...