FastCrud / Dapper - сопоставление нескольких свойств с одной таблицей - PullRequest
0 голосов
/ 22 января 2019

Я изо всех сил пытаюсь отобразить несколько столбцов в одну таблицу, используя Dapper / FastCrud.

У меня есть эта структура (пытался исключить все, что я не считаю уместным)

public class Process 
{
  public int Id {get; set;}
  public bool IsTemplate { get; set; }
  [ForeignKey("CreatedByUser")]
  public int CreatedByUserId {get; set;}
  [ForeignKey("UpdatedByUser")]
  public int? UpdatedByUserId { get;set; }

  public User CreatedByUser { get; set; }
  public User UpdatedByUser {get;set; }
}

public class User
{
  public int Id { get; set; }
  public string Name { get; set; }

  public virtual ICollection<Process> CreatedProcesses { get; set; }
  public virtual ICollection<Process> UpdatedProcesses { get; set; }

  public User
  {
     CreatedProcesses = new HashSet<Process>();
     UpdatedProcesses = new HashSet<Process>();
  }
}

Когда я пытаюсь получить Процесс этим

var processes = connection.Find(statement => statement
   .Where($"{nameof(Process.IsTemplate):C} = 1")
);

Я получаю эту ошибку:

InvalidOperationException: Multiple entity referencing properties were registered for the 'Models.Process' - 'Models.User' relationship
Dapper.FastCrud.Mappings.EntityMapping.<ConstructChildParentEntityRelationships>b__37_3(IGrouping<Type, PropertyMapping> groupedRelMappings)

Эта ссылка показывает, что Dapper может сделать это, но я не знаю, как заставить FastCrud обрабатывать это Dapper multi, отображающий два свойства одного типа

Эта тема в fastcrud также решает проблему https://github.com/MoonStorm/Dapper.FastCRUD/issues/65

Я пытался поместить [NotMapped] на ICollection в User, но безуспешно, все та же ошибка.

...