Entity Framework: к запросу добавляются несуществующие столбцы в таблице отношений «многие ко многим» - PullRequest
0 голосов
/ 21 октября 2018

Я наткнулся на странную проблему в EF.У меня есть следующая иерархия классов в моей модели EF

public abstract class Entity
{
   [Column]
   public string Id { get; set; }

   [Association("Links", "Id", "SourceId", IsForeignKey = false)]
   public List<EntityRelation> Relations { get; set; }
}

public class A : Entity
{
}

public class B : Entity
{
}

public class EntityRelation 
{
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  [Key]
  public long Id { get; set; }

  [Column]
  public int SourceId { get; set; }

  [Column]
  public int TargetId { get; set; }

  [Column]
  public RelationType RelationType { get; set; }
}

Где A и B - конкретные классы, сопоставленные с таблицами, а класс EntityRelation сопоставлен с таблицей, которая содержит логические отношения между строками в любой таблице.A и B.

Странная проблема возникает, когда я пытаюсь вставить строки в таблицу Links - сгенерированный оператор EF INSERT выглядит так:

INSERT INTO Links (SourceId, TargetId, RelationType, **A_Id**, **B_Id**)
VALUES (...)

Для некоторыхПо этой причине EF сгенерировал оператор INSERT, который объединяется со столбцами A_Id, B_Id для каждого производного типа.

Конечно, команда INSERT завершается неудачно со следующим исключением:

System.Data.SqlClient.SqlException: недопустимое имя столбца 'A_Id'.Неверное имя столбца 'B_Id'

Как мне избежать этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...