From ed2eb35be47f381078c748b890e5415e216a2f18 Mon Sep 17 00:00:00 2001 From: Husky Date: Tue, 17 Mar 2020 20:50:44 +0100 Subject: [PATCH] =?UTF-8?q?Objekte=20k=C3=B6nnen=20hinzugef=C3=BCgt=20werd?= =?UTF-8?q?ne?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- KanSan.Base/BaseRepository.cs | 33 ++++++++++++++++- KanSan.Base/Interfaces/IRepository.cs | 6 ++- KanSan.Base/UnitOfWork.cs | 1 + .../Objekte/ObjekteAddViewModel.cs | 2 +- .../Objekte/ObjekteListViewModel.cs | 2 + KanSan/UI/Objekte/UCObjekteList.xaml | 37 +++++++++++++------ 6 files changed, 65 insertions(+), 16 deletions(-) diff --git a/KanSan.Base/BaseRepository.cs b/KanSan.Base/BaseRepository.cs index 2040459..1614109 100644 --- a/KanSan.Base/BaseRepository.cs +++ b/KanSan.Base/BaseRepository.cs @@ -1,4 +1,5 @@ using KanSan.Base.Interfaces; +using KanSan.Base.Models; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; @@ -19,6 +20,7 @@ namespace KanSan.Base this.context = context; if (context == null) throw new ArgumentNullException("context"); this.dbSet = context.Set(); + } public virtual void Delete(TEntity entityToDelete) { @@ -33,9 +35,15 @@ namespace KanSan.Base Delete(entityToDelete); } + public IEnumerable GetAll(string include) + { + return dbSet.Include(include); + } + public IEnumerable Get(Expression> filter = null, Func, IOrderedQueryable> orderBy = null, string includeProperties = "") { IQueryable query = dbSet; + if (filter != null) { @@ -72,9 +80,30 @@ namespace KanSan.Base dbSet.Add(entity); } - public void Update(TEntity entityToUpdate) + public IQueryable Include(params Expression>[] includeExpressions) { - dbSet.Attach(entityToUpdate); + IQueryable query = null; + foreach(var include in includeExpressions) + { + query = dbSet.Include(include); + } + return query ?? dbSet; + } + + public void Update(TEntity entityToUpdate, bool attach = true) + { + if (!attach) + { + var d = context.Entry(entityToUpdate); + if (d != null) + { + d.State = EntityState.Detached; + } + } + else + { + dbSet.Attach(entityToUpdate); + } IDatabaseEntry x = (entityToUpdate as IDatabaseEntry); if(x == null) return; diff --git a/KanSan.Base/Interfaces/IRepository.cs b/KanSan.Base/Interfaces/IRepository.cs index 6a2f679..36c5242 100644 --- a/KanSan.Base/Interfaces/IRepository.cs +++ b/KanSan.Base/Interfaces/IRepository.cs @@ -6,16 +6,18 @@ using System.Text; namespace KanSan.Base.Interfaces { - public interface IRepository where TEntity: class + public interface IRepository where TEntity : class { void Delete(TEntity entityToDelete); void Delete(object id); + IEnumerable GetAll(string include); IEnumerable Get( Expression> filter = null, Func, IOrderedQueryable> orderBy = null, string includeProperties = ""); TEntity GetByID(object id); void Insert(TEntity entity); - void Update(TEntity entityToUpdate); + void Update(TEntity entityToUpdate, bool attach = true); + IQueryable Include(params Expression>[] includes); } } diff --git a/KanSan.Base/UnitOfWork.cs b/KanSan.Base/UnitOfWork.cs index 98a8093..8f40a97 100644 --- a/KanSan.Base/UnitOfWork.cs +++ b/KanSan.Base/UnitOfWork.cs @@ -25,6 +25,7 @@ namespace KanSan.Base public UnitOfWork(KanSanContext dbContext) { _dbContext = dbContext; + //_dbContext.ChangeTracker.QueryTrackingBehavior = Microsoft.EntityFrameworkCore.QueryTrackingBehavior.NoTracking; } public IRepository ProjekteRepository => _projekte ?? (_projekte = new BaseRepository(_dbContext)); diff --git a/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs index 338a285..9f40ea8 100644 --- a/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteAddViewModel.cs @@ -42,7 +42,7 @@ namespace KanSan.ViewModel.Objekte newSewer.StrasseName = Strasse; newSewer.ObjektNummer = PunktOben; - unitOfWork.KanaeleRepository.Update(newSewer); + unitOfWork.KanaeleRepository.Update(newSewer,false); unitOfWork.Commit(); } diff --git a/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs b/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs index 67f9e46..89ea2b5 100644 --- a/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs +++ b/KanSan.ViewModel/Objekte/ObjekteListViewModel.cs @@ -28,6 +28,8 @@ namespace KanSan.ViewModel this.selectedBaustelle = selectedBaustelle; // List list = unitOfWork.KanaeleRepository.Get(x => x.Baustelle.Equals(selectedBaustelle)).ToList(); + var my = unitOfWork.KanaeleRepository.Include(c => c.PunktOben); + var x = list.GroupBy(x => x.StrasseName).Select(x => new ObjekteTransfer { Strassename = x.Key, diff --git a/KanSan/UI/Objekte/UCObjekteList.xaml b/KanSan/UI/Objekte/UCObjekteList.xaml index 0ecf0b4..2729b1a 100644 --- a/KanSan/UI/Objekte/UCObjekteList.xaml +++ b/KanSan/UI/Objekte/UCObjekteList.xaml @@ -3,6 +3,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:self="clr-namespace:KanSan.ViewModel;assembly=KanSan.ViewModel" + xmlns:model="clr-namespace:KanSan.Base.Models;assembly=KanSan.Base" xmlns:local="clr-namespace:KanSan.UI" xmlns:sd ="clr-namespace:KanSan.SampleData" mc:Ignorable="d" @@ -17,18 +19,31 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + -