David2509 Ответов: 0

Обновление мастера с записью суммы деталей


привет

как я могу обновить общее количество master, когда каждая деталь была вставлена /обновлена/удалена, а не все детали master?

если я использовал репозиторий для master и репозиторий details, и если эти репозитории реализуют IDisposable, как использовать tow репозитории с каждым их save methode для обновления master total с unitprice этой детали в классе BLL?

Что я уже пробовал:

я создал решение в visual studio 2012 и это решение заложено в 4 проекта :

1. уровень представления проекта (asp.net mvc)

2. уровень хозяйствующих субъектов

public class Master
{
    public int Id {get; set;}
    public decimal TotalPrice {get; set;}
   //the rest of properties
    public private ICollection<Detail> Details {get; set;}
}

public class Detail
{
   public int Id {get; set;}
   public decimal UnitePrice {get; set;}
   //the rest of properties
   public int MasterId {get; set;}
   public private Master Master {get; set;}
}


3. уровень доступа к данным (ado.net модель данных entity framework + репозитории)

public class MasterRepository : IMasterRepository{
//code of class to implemente GetAll + CRUD for master
}


public class DetailRepository : IDetailRepository{

    EFContext context = new EFContext();

    //Get the details for one master

    public IEnumerableDetail GetAllDetailsByMasterId(int masterId)
    {
       var query = context.Details.Where(d=>d.MasterId == masterId)
    }

   //the rest of code to implemente CRUD of details

}

4. но для уровня бизнес-логики в классах Bll я пытаюсь вычислить общую сумму мастера по сумме единичных цен на детали

public class MasterDetailsBll
{

    public decimal GetTotal(){

   //call the methode GetAllDetailsByMasterId of DetailRepository thet return 
    //enumerebal<detail> and then call the extention methode Sum for calculate 
    // the sum of unite prices of detail
  
       using (var repository = new DetailRepository())
       {       
          var total = reopsitory.GetAllDetailsByMasterId(masterId).Sum(d=>d.UnitePrice);
       }

      //call the CRUD Mehodes of repositoryMaster and CRUD of the repositoryDetails
    }
}


Я был бы благодарен, если бы вы помогли мне

до скорого свидания

GKP1992

Из того, что я понял из вашего вопроса, Вы хотите обновить свои основные записи суммой цен за единицу в подробных записях на основе MasterId. Это то, что ты хочешь спросить?

David2509

Да это то что я хочу спросить

Maciej Los

Почему? Вам не нужно обновлять главную таблицу. Все, что вам нужно сделать, это создать метод, который возвращает текущий репозиторий.

David2509

я не понимаю не могли бы вы привести мне пример

0 Ответов