Обновление мастера с записью суммы деталей
привет
как я могу обновить общее количество 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
я не понимаю не могли бы вы привести мне пример