Compare commits
2 Commits
99640602f5
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 92893665fe | |||
| 8813c83ed9 |
25
FahrzeugDatenBank/DatenbankKontext.cs
Normal file
25
FahrzeugDatenBank/DatenbankKontext.cs
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace FahrzeugDatenBank;
|
||||||
|
|
||||||
|
public class DatenbankKontext : DbContext
|
||||||
|
{
|
||||||
|
private readonly string _connectionString;
|
||||||
|
|
||||||
|
public DatenbankKontext(string connectionString)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
|
{
|
||||||
|
optionsBuilder.UseMySql(_connectionString, ServerVersion.AutoDetect(_connectionString));
|
||||||
|
}
|
||||||
|
|
||||||
|
public DbSet<FahrzeugDTO> Fahrzeuge { get; set; }
|
||||||
|
|
||||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<FahrzeugDTO>().HasKey(e => e.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,14 @@
|
|||||||
namespace FahrzeugDatenBank;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace FahrzeugDatenBank;
|
||||||
|
|
||||||
|
[Table("fahrzeuge")]
|
||||||
public class FahrzeugDTO
|
public class FahrzeugDTO
|
||||||
{
|
{
|
||||||
|
[Column("id")]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
[Column("fahrzeug_name")]
|
||||||
public string? Name { get; set; }
|
public string? Name { get; set; }
|
||||||
|
[Column("fahrzeug_typ")]
|
||||||
public string? Typ { get; set; }
|
public string? Typ { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,10 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.17" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.17" />
|
||||||
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
||||||
|
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
47
FahrzeugDatenBank/FahrzeugOrmRepository.cs
Normal file
47
FahrzeugDatenBank/FahrzeugOrmRepository.cs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
namespace FahrzeugDatenBank;
|
||||||
|
|
||||||
|
public class FahrzeugOrmRepository : IFahrzeugRepository
|
||||||
|
{
|
||||||
|
private readonly DatenbankKontext _kontext;
|
||||||
|
|
||||||
|
public FahrzeugOrmRepository(DatenbankKontext kontext)
|
||||||
|
{
|
||||||
|
this._kontext = kontext;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AktualisiereFahrzeug(int id, string fahrzeugName, string fahrzeugTyp)
|
||||||
|
{
|
||||||
|
FahrzeugDTO fahrzeug = _kontext.Fahrzeuge.First(f => f.Id == id);
|
||||||
|
fahrzeug.Name = fahrzeugName;
|
||||||
|
fahrzeug.Typ = fahrzeugTyp;
|
||||||
|
_kontext.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void FuegeFahrzeugEin(string fahrzeugName, string fahrzeugTyp)
|
||||||
|
{
|
||||||
|
_kontext.Fahrzeuge.Add(new FahrzeugDTO() { Name = fahrzeugName, Typ = fahrzeugTyp });
|
||||||
|
_kontext.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public FahrzeugDTO GetFahrzeugByID(int id)
|
||||||
|
{
|
||||||
|
return _kontext.Fahrzeuge.First(f => f.Id == id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FahrzeugDTO> HoleAlleFahrzeuge()
|
||||||
|
{
|
||||||
|
return _kontext.Fahrzeuge.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoescheFahrzeug(int id)
|
||||||
|
{
|
||||||
|
_kontext.Fahrzeuge.Remove(GetFahrzeugByID(id));
|
||||||
|
_kontext.SaveChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FahrzeugDTO> SucheFahrzeuge(string searchTerm)
|
||||||
|
{
|
||||||
|
return _kontext.Fahrzeuge.Where(f => f.Name.Contains(searchTerm) || f.Typ.Contains(searchTerm)).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace FahrzeugDatenBank;
|
namespace FahrzeugDatenBank;
|
||||||
|
|
||||||
public class FahrzeugRepository
|
public class FahrzeugRepository : IFahrzeugRepository
|
||||||
{
|
{
|
||||||
private string _connectionString;
|
private string _connectionString;
|
||||||
|
|
||||||
|
|||||||
13
FahrzeugDatenBank/IFahrzeugRepository.cs
Normal file
13
FahrzeugDatenBank/IFahrzeugRepository.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
namespace FahrzeugDatenBank
|
||||||
|
{
|
||||||
|
public interface IFahrzeugRepository
|
||||||
|
{
|
||||||
|
void AktualisiereFahrzeug(int id, string fahrzeugName, string fahrzeugTyp);
|
||||||
|
void FuegeFahrzeugEin(string fahrzeugName, string fahrzeugTyp);
|
||||||
|
FahrzeugDTO GetFahrzeugByID(int id);
|
||||||
|
List<FahrzeugDTO> HoleAlleFahrzeuge();
|
||||||
|
void LoescheFahrzeug(int id);
|
||||||
|
List<FahrzeugDTO> SucheFahrzeuge(string searchTerm);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -21,8 +21,12 @@ namespace FahzeugWPF
|
|||||||
ServiceCollection services = new ServiceCollection();
|
ServiceCollection services = new ServiceCollection();
|
||||||
|
|
||||||
services.AddScoped<IKonfigurationsleser>(sp => new Konfigurationsleser(configuration));
|
services.AddScoped<IKonfigurationsleser>(sp => new Konfigurationsleser(configuration));
|
||||||
services.AddScoped(sp => new FahrzeugRepository(sp.GetRequiredService<IKonfigurationsleser>().LiesDBVerebindung()));
|
services.AddScoped(sp => new DatenbankKontext(sp.GetRequiredService<IKonfigurationsleser>().LiesDBVerebindung()));
|
||||||
|
// services.AddScoped<IFahrzeugRepository>(sp => new FahrzeugRepository(sp.GetRequiredService<IKonfigurationsleser>().LiesDBVerebindung()));
|
||||||
|
services.AddScoped<IFahrzeugRepository, FahrzeugOrmRepository>();
|
||||||
services.AddScoped<FahrzeugeModell>();
|
services.AddScoped<FahrzeugeModell>();
|
||||||
|
services.AddScoped<EinfuegenModel>();
|
||||||
|
services.AddScoped<EinfuegenWindow>();
|
||||||
services.AddSingleton<MainWindowViewModel>();
|
services.AddSingleton<MainWindowViewModel>();
|
||||||
services.AddSingleton<MainWindow>();
|
services.AddSingleton<MainWindow>();
|
||||||
|
|
||||||
|
|||||||
29
FahzeugWPF/EinfuegenModel.cs
Normal file
29
FahzeugWPF/EinfuegenModel.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
|
namespace FahzeugWPF;
|
||||||
|
|
||||||
|
class EinfuegenModel : ViewModelBase
|
||||||
|
{
|
||||||
|
private readonly FahrzeugeModell _fahrzeugeModell;
|
||||||
|
|
||||||
|
public EinfuegenModel(FahrzeugeModell model)
|
||||||
|
{
|
||||||
|
this._fahrzeugeModell = model;
|
||||||
|
EinfuegenKommando = new RelayCommand(Einfugen);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string NeuesrFahrzeugName { get; set; }
|
||||||
|
public string NeuerFahrzeugTyp { get; set; }
|
||||||
|
public ICommand EinfuegenKommando { get; private set; }
|
||||||
|
|
||||||
|
private void Einfugen(object? o)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(NeuerFahrzeugTyp) || string.IsNullOrEmpty(NeuesrFahrzeugName)) { return; }
|
||||||
|
_fahrzeugeModell.EinfuegenFahrzeug(NeuesrFahrzeugName, NeuerFahrzeugTyp);
|
||||||
|
if (o is Window window)
|
||||||
|
{
|
||||||
|
window.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
17
FahzeugWPF/EinfuegenWindow.xaml
Normal file
17
FahzeugWPF/EinfuegenWindow.xaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<Window x:Class="FahzeugWPF.EinfuegenWindow"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:local="clr-namespace:FahzeugWPF"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
x:Name="EinfuegenFenster"
|
||||||
|
Title="Fahrzeug Einfuegen" Height="300" Width="500">
|
||||||
|
<StackPanel>
|
||||||
|
<TextBlock Margin="1" Text="Neuse Fahrzeug" VerticalAlignment="Top" />
|
||||||
|
<TextBox HorizontalAlignment="Left" Margin="1" TextWrapping="Wrap" Width="498" Text="{Binding Path=NeuesrFahrzeugName}" />
|
||||||
|
<TextBlock Margin="1" Text="Fahrzeugtyp" VerticalAlignment="Top"/>
|
||||||
|
<TextBox HorizontalAlignment="Left" Margin="1" TextWrapping="Wrap" Width="498" Text="{Binding Path=NeuerFahrzeugTyp}"/>
|
||||||
|
<Button Content="Einfügen" HorizontalAlignment="Left" Margin="1" VerticalAlignment="Top" Command="{Binding Path=EinfuegenKommando}" CommandParameter="{Binding ElementName=EinfuegenFenster}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Window>
|
||||||
27
FahzeugWPF/EinfuegenWindow.xaml.cs
Normal file
27
FahzeugWPF/EinfuegenWindow.xaml.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Documents;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Windows.Shapes;
|
||||||
|
|
||||||
|
namespace FahzeugWPF
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for EinfuegenWindow.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class EinfuegenWindow : Window
|
||||||
|
{
|
||||||
|
public EinfuegenWindow()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,9 +4,9 @@ namespace FahzeugWPF;
|
|||||||
|
|
||||||
class FahrzeugeModell
|
class FahrzeugeModell
|
||||||
{
|
{
|
||||||
private readonly FahrzeugRepository _repository;
|
private readonly IFahrzeugRepository _repository;
|
||||||
|
|
||||||
public FahrzeugeModell(FahrzeugRepository repository)
|
public FahrzeugeModell(IFahrzeugRepository repository)
|
||||||
{
|
{
|
||||||
this._repository = repository;
|
this._repository = repository;
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,11 @@ class FahrzeugeModell
|
|||||||
_repository.LoescheFahrzeug(fahrzeug.Id);
|
_repository.LoescheFahrzeug(fahrzeug.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void EinfuegenFahrzeug(string faName, string faType)
|
||||||
|
{
|
||||||
|
_repository.FuegeFahrzeugEin(faName, faType);
|
||||||
|
}
|
||||||
|
|
||||||
private IEnumerable<Fahrzeug> KonvertiereFahrzeuge(IEnumerable<FahrzeugDTO> fahrzeugs)
|
private IEnumerable<Fahrzeug> KonvertiereFahrzeuge(IEnumerable<FahrzeugDTO> fahrzeugs)
|
||||||
{
|
{
|
||||||
return fahrzeugs.Select(fahrzeug => KonvertiereFahrzeuf(fahrzeug));
|
return fahrzeugs.Select(fahrzeug => KonvertiereFahrzeuf(fahrzeug));
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
<MenuItem Header="Liste leeren"
|
<MenuItem Header="Liste leeren"
|
||||||
Command="{Binding Path=LeerenKommando}"/>
|
Command="{Binding Path=LeerenKommando}"/>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<MenuItem Header="Einfügen" Command="{Binding Path=Einfugen}"/>
|
||||||
</Menu>
|
</Menu>
|
||||||
<DataGrid x:Name="fahrzeugTabelle"
|
<DataGrid x:Name="fahrzeugTabelle"
|
||||||
CanUserAddRows="False"
|
CanUserAddRows="False"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using FahrzeugDatenBank;
|
using FahrzeugDatenBank;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
@@ -23,10 +24,12 @@ class MainWindowViewModel : ViewModelBase
|
|||||||
this.InitialisiereDasViewModell();
|
this.InitialisiereDasViewModell();
|
||||||
this.LoeschenKommando = new RelayCommand(LoescheFahrzeug);
|
this.LoeschenKommando = new RelayCommand(LoescheFahrzeug);
|
||||||
this.LeerenKommando = new RelayCommand(LeereListe);
|
this.LeerenKommando = new RelayCommand(LeereListe);
|
||||||
|
this.Einfugen = new RelayCommand(EinfugenMachen);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICommand LoeschenKommando { get; private set; }
|
public ICommand LoeschenKommando { get; private set; }
|
||||||
public ICommand LeerenKommando { get; private set; }
|
public ICommand LeerenKommando { get; private set; }
|
||||||
|
public ICommand Einfugen { get; private set; }
|
||||||
|
|
||||||
public string MainWindowTitle
|
public string MainWindowTitle
|
||||||
{
|
{
|
||||||
@@ -55,7 +58,8 @@ class MainWindowViewModel : ViewModelBase
|
|||||||
|
|
||||||
private void LoescheFahrzeug(object? fahrzeug)
|
private void LoescheFahrzeug(object? fahrzeug)
|
||||||
{
|
{
|
||||||
if (fahrzeug == null) return;
|
if (fahrzeug == null)
|
||||||
|
return;
|
||||||
_model.LoescheFahrzeug((Fahrzeug)fahrzeug);
|
_model.LoescheFahrzeug((Fahrzeug)fahrzeug);
|
||||||
this.Fahrzeuge.Remove((Fahrzeug)fahrzeug);
|
this.Fahrzeuge.Remove((Fahrzeug)fahrzeug);
|
||||||
}
|
}
|
||||||
@@ -70,4 +74,14 @@ class MainWindowViewModel : ViewModelBase
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void EinfugenMachen(object? o)
|
||||||
|
{
|
||||||
|
var einfuege = App.ServiceProvider.GetService<EinfuegenWindow>();
|
||||||
|
einfuege.DataContext = App.ServiceProvider.GetService<EinfuegenModel>();
|
||||||
|
einfuege.ShowDialog();
|
||||||
|
|
||||||
|
LeereListe(o);
|
||||||
|
InitialisiereDasViewModell();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user