У меня есть NestedSetBuilder
класс. Он имеет MakeRootAsync
метод:
public async Task<TEntity> MakeRootAsync<TEntity>(TEntity ownerNode) where TEntity: NestedSetEntity
{
_operation = OperationMakeRoot;
ownerNode.Lft = 1;
ownerNode.Rgt = 2;
ownerNode.Depth = 0;
await _db.Set<TEntity>().AddAsync(ownerNode);
await _db.SaveChangesAsync();
return ownerNode;
}
Существует базовый класс NestedSetEntity
:
public class NestedSetEntity
{
public Guid Id { get; set; }
public int Lft { get; set; }
public int Rgt { get; set; }
public int Depth { get; set; }
public Guid? Tree { get; set; }
}
Есть дочерний класс Category
:
[Table("categories")]
public class Category: NestedSetEntity
{
public Category()
{
Visible = true;
CreatedAt = DateTime.Now;
UpdatedAt = DateTime.Now;
}
[Column("id")]
public Guid Id { get; set; }
[Required]
[StringLength(256)]
[Column("title")]
public string Title { get; set; }
[Column("lft")]
public int Lft { get; set; }
[Column("rgt")]
public int Rgt { get; set; }
[Column("depth")]
public int Depth { get; set; }
[Column("tree")]
public Guid? Tree { get; set; }
[Column("visible")]
public bool Visible { get; set; }
[Required]
[Column("created_at")]
public DateTime CreatedAt { get; set; }
[Column("updated_at")]
public DateTime UpdatedAt { get; set; }
}
Существует метод, в котором makeRootAsync
называется
[HttpGet]
public async Task<IActionResult> Categories()
{
//var res = await _dnsParserService.ParseCategoriesAsync();
var res = await _categoryParserService.ParseCategoryListAsync();
var categoryIds = new Dictionary<string, string>();
foreach (var categoryListResItem in res)
{
if (categoryIds.TryGetValue(categoryListResItem.CategoryFirstTitle, out var parentCategory))
continue;
var node = Map(categoryListResItem, "CategoryFirstTitle");
var addedCategory = await _nestedSetBuilder.MakeRootAsync(node); // this call
categoryIds[categoryListResItem.CategoryFirstTitle] = addedCategory.Id.ToString();
}
return Ok(res);
}
В базе данных столбцы Lft
, Rgt
, Depth
имеют нулевые значения:
В отладчике видно, что поля дублируются (отдельно поля базового класса и дочернего класса):
Подскажите, как это исправить? Я использую базовый класс для работы с LINQ