Я работаю с двумя таблицами:
Products
и Enums
.
Enums
Таблица содержит перечисления для каждого класса в системе, если это необходимо, например, перечислениядля ProductTypes
, EmployeeType
и т. д. и т. д.
В каждой из моих не таблиц перечисления я держу целочисленное значение, которое представляет enum value.
Я пытался прочитать данные из таблицы Enum, и это работает, но мне кажется, что сейчас это сложно:
public class ClassesEnums
{
public int Type { get; set; }
public string Title { get; set; }
public long Value { get; set; }
}
public class Product
{
public long ProductId {get;set;}
public ProductType ProductType { get; set; } // this is contained in ClassesEnums table
public string ProductType { get; set; }
public WarehouseType WarehouseType { get; set; } // this is contained in ClassesEnums table
}
, поэтому один из моихСтрока продуктов выглядит следующим образом:
id product_type warehouse_type
1 10 7
Вот ГЛАВНЫЙ код, где я читаю данные из таблицы Enum:
var query = _context.Products.Where(x => x.ProductId == searchObject.ProductId)
.Join(_context.ClassesEnums.Where(x => x.Type == (int)ClassesEnums.ProductType),
prod => (long)prod.ProductType,
enums => enums.Value,
(prod, enums) => new
{ prod, enum })
.Join(_context.ClassesEnums.Where(x => x.Type == (int)ClassesEnums.WarehouseType),
prodWt => (long)prodWt.prod.WarehouseType,
enumsWt => enumsWt.Value,
(prodWt, enumsWt) => new
{
prodWt,
enumsWt
})
.Select(x => new ProductDTO
{
ProductType = x.prodWt.enums.Name
// And so on
});
Есть ли более чистый или приятный способ сделать это, потому что этоу меня ушло слишком много времени на написание, и теперь это кажется сложным?
PS Я думал о .Include () Но я считаю, что это не сработает, как ожидалось, потому что между этими двумя таблицами нет внешних ключей.
Спасибо
Приветствия