Entity Framework Code сначала самоссылающийся идентификатор вставляет неправильный объект - PullRequest
0 голосов
/ 02 мая 2018

У меня возникают проблемы при вставке в таблицу кода с использованием EF Core 2.0.

Я получаю это исключение при вызове моего context.SaveChanges()

Cannot insert explicit value for identity column in table 'Departments' when IDENTITY_INSERT is set to OFF.

Вот моя модель:

public class Department 
{
  public int ID { get; set; }
  public string Name { get; set; }
  public int? ParentDepartmentID { get; set; }
  public Department ParentDepartment { get; set; }
}

Когда я использую SQL Server Profiler, я вижу, что оператор вставки объекта, который выглядит следующим образом: Object im trying to save

Ясно пытаюсь вставить мой ParentDepartment снова.

exec sp_executesql N'SET NOCOUNT ON;
INSERT INTO [Departments] ([ID], [Name], [ParentDepartmentID])
VALUES (@p0, @p1, @p2);
',N'@p0 int,@p1 nvarchar(4000),@p2 int',@p0=1,@p1=N'Aalborg',@p2=NULL

Моя функция сохранения, которая сохраняет объект, показанный выше, выглядит следующим образом:

public string Save()
{
  string result = this.Validate();

  if (result.Equals(""))
  {
    using (LinerContext context = new LinerContext())
    {
      context.Departments.Add(this);
      context.SaveChanges();
    }
  }
  return result;
}

Действительно надеюсь, что кто-то может помочь - заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 30 июля 2018

Исправлена; Мне просто нужно было присоединить родительский отдел к dbset

0 голосов
/ 02 мая 2018

Что вам нужно, это, вероятно, изменить способ установки модели. Для самостоятельной ссылки вы, вероятно, должны сделать что-то подобное (см. этот ответ для реализации Fluent API при создании модели):

public class Department 
{
    public int ID { get;set; }
    public string Name { get;set; }
    public int? ParentDeparmentId { get; set; }

    [ForeignKey("ParentDeparmentId ")]
    public Department ParentDeparment { get; set; }
}
...