Aufgabe OR-Mapper

This commit is contained in:
2025-06-16 15:01:00 +02:00
parent 8813c83ed9
commit 92893665fe
8 changed files with 101 additions and 5 deletions

View 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);
}
}

View File

@@ -1,8 +1,14 @@
namespace FahrzeugDatenBank;
using System.ComponentModel.DataAnnotations.Schema;
namespace FahrzeugDatenBank;
[Table("fahrzeuge")]
public class FahrzeugDTO
{
[Column("id")]
public int Id { get; set; }
[Column("fahrzeug_name")]
public string? Name { get; set; }
[Column("fahrzeug_typ")]
public string? Typ { get; set; }
}

View File

@@ -7,7 +7,10 @@
</PropertyGroup>
<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="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
</ItemGroup>
</Project>

View 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();
}
}

View File

@@ -2,7 +2,7 @@
namespace FahrzeugDatenBank;
public class FahrzeugRepository
public class FahrzeugRepository : IFahrzeugRepository
{
private string _connectionString;

View 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);
}
}

View File

@@ -21,7 +21,9 @@ namespace FahzeugWPF
ServiceCollection services = new ServiceCollection();
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<EinfuegenModel>();
services.AddScoped<EinfuegenWindow>();

View File

@@ -4,9 +4,9 @@ namespace FahzeugWPF;
class FahrzeugeModell
{
private readonly FahrzeugRepository _repository;
private readonly IFahrzeugRepository _repository;
public FahrzeugeModell(FahrzeugRepository repository)
public FahrzeugeModell(IFahrzeugRepository repository)
{
this._repository = repository;
}