Это операция, которую я делал много раз в прошлом, используя подход, основанный на базе данных.Сейчас я пытаюсь сделать это сначала с помощью кода EF Core, и у меня ужасный сбой.
У меня есть следующая модель:
public class DataMapping
{
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Model { get; set; }
public string Property { get; set; }
public bool IgnoreProperty { get; set; }
[NotMapped] //<-- I had to add this as the migration was complaining that it did not know what the relation was
public List<DataMappingRelation> DataMappingRelations { get; set; }
public DateTime DateCreated { get; set; } = DateTime.UtcNow;
public DateTime? DateModified { get; set; }
}
и модель Bridge, которая в основном создает отношениямежду двумя элементами DataMapping в одной и той же таблице:
public class DataMappingRelation
{
[Key]
[Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
[ForeignKey("DataMappingId")]
public long? DataMapping1Id { get; set; }
public DataMapping DataMapping1 { get; set; }
[ForeignKey("DataMappingId")]
public long? DataMapping2Id { get; set; }
public DataMapping DataMapping2 { get; set; }
}
Однако этот вызов не работает:
return _context.DataMappings.Where(x => x.Model == type.FullName)
.Include(x=>x.DataMappingRelations)
.ToList();
Он не похож на функцию Include и выдает исключение null ref.
Все, что мне в основном нужно сделать, - это для данного «DataMapping» получить все связанные элементы DataMapping на основе отношений в таблице «DataMappingRelations».
Да, я посмотрел на этот ответ но опять же, это пример двух отдельных таблиц, а не одной таблицы, соединяющей себя.
Я подозреваю, что все это сделал неправильно.Как я могу заставить это работать?Все примеры, которые я нашел, соединяют две отдельные таблицы.это соединит одну и ту же таблицу.