У меня есть родительская таблица и несколько дочерних таблиц, структура которых отличается друг от друга. Дочерние таблицы имеют ключ родительской таблицы как внешний ключ с отношением один к одному. В одно время родительская таблица имеет только одного дочернего элемента, а другие дочерние таблицы равны нулю. Могу ли я собрать запрос, который получает все данные из родительской таблицы и всех дочерних таблиц со всеми дополнительными столбцами?
Я использую приведенный ниже код, но он имеет много запросов, и это не хорошо для меня, поэтому я хочусобрать эти запросы в один.
(from reward in entities.REWARDS
where reward.Fk_BrandId_Reward == brandId && reward.RewardStatus == true
orderby reward.RewardRedemption ascending
select new
{
reward.RewardId,
reward.RewardImage,
reward.RewardTitle,
reward.RewardDescription,
reward.TYPE.Title,
reward.RewardRedemption,
reward.RewardStatus,
reward.RewardExpireInDays,
reward.RewardValidFrom,
reward.RewardValidTo,
reward.RewardDeductionPoints,
reward.RewardIsIsSignUpBonus,
reward.RewardIsTiered,
reward.RewardTierIncrement,
reward.Fk_BrandId_Reward,
Type = (from type in entities.TYPES
where type.Id == reward.FK_RewardTypeId
select new
{
type.Id,
type.Title
}).FirstOrDefault(),
Schedule = (from schedule in entities.SCHEDULES
where schedule.FK_RewardId == reward.RewardId
select new
{
schedule.Id,
schedule.FromWeekDay,
schedule.FromMonthDate,
schedule.FromAnnualDate,
schedule.ExpireInDays,
schedule.FK_RewardId
}).FirstOrDefault(),
ItemReward = (from item in entities.ITEMS
where item.FK_RewardId == reward.RewardId
select new
{
item.Id,
item.RewardDiscount,
item.FK_RewardId,
Product = (from product in entities.PRODUCTS
where product.ProductId == item.FK_ProductId
select new
{
product.ProductId,
product.ProductTitle,
product.ProductOldPrice,
product.ProductNewPrice,
product.ProductImageUrl,
product.ProductContent,
product.ProductCategory,
product.ProductSubCategory,
product.ProductPostedTime,
product.ProductStocks,
product.ProductStatus,
product.FK_BrandId_Products
}).FirstOrDefault(),
Recipe = (from recipe in entities.RECIPEs
where recipe.RecipeId == item.FK_RecipeId
select new
{
recipe.RecipeId,
recipe.RecipeImage,
recipe.RecipeTitle,
recipe.RecipeDescription,
recipe.RecipePrice,
recipe.RecipeStatus,
recipe.RecipePostTime,
recipe.RecipeStock,
recipe.CATEGORY.CategoryTitle,
recipe.FK_BrandId_Recipes,
recipe.RecipeExtraObject
}).FirstOrDefault()
}).FirstOrDefault(),
CashReward = (from cash in entities.CASHes
where cash.FK_RewardId == reward.RewardId
select new
{
cash.Id,
cash.RewardCash,
cash.FK_RewardId
}).FirstOrDefault(),
PointReward = (from point in entities.POINTS
where point.FK_RewardId == reward.RewardId
select new
{
point.Id,
point.RewardPoints,
point.FK_RewardId
}).FirstOrDefault(),
DeliveryReward = (from delivery in entities.DELIVERies
where delivery.FK_RewardId == reward.RewardId
select new
{
delivery.Id,
delivery.RewardDiscount,
delivery.FK_RewardId
}).FirstOrDefault()
}).ToList();
У любого есть идея теста. Заранее спасибо.