Entities vereinfacht (kein Entity Developer mehr)

This commit is contained in:
Andre Beging
2022-05-21 13:56:21 +02:00
parent 21f4906277
commit f23f225098
36 changed files with 416 additions and 2255 deletions

View File

@@ -1,170 +0,0 @@
//------------------------------------------------------------------------------
// This is auto-generated code.
//------------------------------------------------------------------------------
// This code was generated by Entity Developer tool using EF Core template.
// Code is generated on: 11.04.2022 17:16:51
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata;
using FoodsharingSiegen.Contracts.Entity;
namespace FoodsharingSiegen.Server.Data
{
public partial class FsContext : DbContext
{
public FsContext() :
base()
{
OnCreated();
}
public FsContext(DbContextOptions<FsContext> options) :
base(options)
{
OnCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured ||
(!optionsBuilder.Options.Extensions.OfType<RelationalOptionsExtension>().Any(ext => !string.IsNullOrEmpty(ext.ConnectionString) || ext.Connection != null) &&
!optionsBuilder.Options.Extensions.Any(ext => !(ext is RelationalOptionsExtension) && !(ext is CoreOptionsExtension))))
{
}
CustomizeConfiguration(ref optionsBuilder);
base.OnConfiguring(optionsBuilder);
}
partial void CustomizeConfiguration(ref DbContextOptionsBuilder optionsBuilder);
public virtual DbSet<User> Users
{
get;
set;
}
public virtual DbSet<Prospect> Prospects
{
get;
set;
}
public virtual DbSet<Interaction> Interactions
{
get;
set;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
this.UserMapping(modelBuilder);
this.CustomizeUserMapping(modelBuilder);
this.ProspectMapping(modelBuilder);
this.CustomizeProspectMapping(modelBuilder);
this.InteractionMapping(modelBuilder);
this.CustomizeInteractionMapping(modelBuilder);
RelationshipsMapping(modelBuilder);
CustomizeMapping(ref modelBuilder);
}
#region User Mapping
private void UserMapping(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable(@"Users");
modelBuilder.Entity<User>().Property(x => x.Id).HasColumnName(@"Id").IsRequired().ValueGeneratedOnAdd();
modelBuilder.Entity<User>().Property(x => x.Mail).HasColumnName(@"Mail").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.Type).HasColumnName(@"Type").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.Verified).HasColumnName(@"Verified").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.Name).HasColumnName(@"Name").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.Created).HasColumnName(@"Created").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.EncryptedPassword).HasColumnName(@"EncryptedPassword").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.Groups).HasColumnName(@"Groups").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().Property(x => x.ForceLogout).HasColumnName(@"ForceLogout").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<User>().HasKey(@"Id");
}
partial void CustomizeUserMapping(ModelBuilder modelBuilder);
#endregion
#region Prospect Mapping
private void ProspectMapping(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Prospect>().ToTable(@"Prospects");
modelBuilder.Entity<Prospect>().Property(x => x.Id).HasColumnName(@"Id").IsRequired().ValueGeneratedOnAdd();
modelBuilder.Entity<Prospect>().Property(x => x.FsId).HasColumnName(@"FsId").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Prospect>().Property(x => x.Name).HasColumnName(@"Name").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Prospect>().Property(x => x.Created).HasColumnName(@"Created").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Prospect>().Property(x => x.Memo).HasColumnName(@"Memo").ValueGeneratedNever();
modelBuilder.Entity<Prospect>().HasKey(@"Id");
}
partial void CustomizeProspectMapping(ModelBuilder modelBuilder);
#endregion
#region Interaction Mapping
private void InteractionMapping(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Interaction>().ToTable(@"Interactions");
modelBuilder.Entity<Interaction>().Property(x => x.Id).HasColumnName(@"Id").IsRequired().ValueGeneratedOnAdd();
modelBuilder.Entity<Interaction>().Property(x => x.UserId).HasColumnName(@"UserId").ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.Date).HasColumnName(@"Date").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.Info).HasColumnName(@"Info").ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.Type).HasColumnName(@"Type").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.ProspectId).HasColumnName(@"ProspectId").ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.Alert).HasColumnName(@"Alert").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.NotNeeded).HasColumnName(@"NotNeeded").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Interaction>().Property(x => x.Created).HasColumnName(@"Created").IsRequired().ValueGeneratedNever();
modelBuilder.Entity<Interaction>().HasKey(@"Id");
}
partial void CustomizeInteractionMapping(ModelBuilder modelBuilder);
#endregion
private void RelationshipsMapping(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasMany(x => x.Interactions).WithOne(op => op.User).HasForeignKey(@"UserId").IsRequired(true);
modelBuilder.Entity<Prospect>().HasMany(x => x.Interactions).WithOne(op => op.Prospect).HasForeignKey(@"ProspectId").IsRequired(true);
modelBuilder.Entity<Interaction>().HasOne(x => x.User).WithMany(op => op.Interactions).HasForeignKey(@"UserId").IsRequired(true);
modelBuilder.Entity<Interaction>().HasOne(x => x.Prospect).WithMany(op => op.Interactions).HasForeignKey(@"ProspectId").IsRequired(true);
}
partial void CustomizeMapping(ref ModelBuilder modelBuilder);
public bool HasChanges()
{
return ChangeTracker.Entries().Any(e => e.State == Microsoft.EntityFrameworkCore.EntityState.Added || e.State == Microsoft.EntityFrameworkCore.EntityState.Modified || e.State == Microsoft.EntityFrameworkCore.EntityState.Deleted);
}
partial void OnCreated();
}
}

View File

@@ -1,11 +1,99 @@
namespace FoodsharingSiegen.Server.Data
{
using FoodsharingSiegen.Contracts.Entity;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
public partial class FsContext
namespace FoodsharingSiegen.Server.Data
{
/// <summary>
/// The fs context class (a. beging, 21.05.2022)
/// </summary>
/// <seealso cref="DbContext"/>
public class FsContext : DbContext
{
partial void OnCreated()
#region Public Properties
/// <summary>
/// Gets or sets the value of the interactions (ab)
/// </summary>
public DbSet<Interaction> Interactions { get; set; }
/// <summary>
/// Gets or sets the value of the prospects (ab)
/// </summary>
public DbSet<Prospect> Prospects { get; set; }
/// <summary>
/// Gets or sets the value of the users (ab)
/// </summary>
public DbSet<User> Users { get; set; }
#endregion
#region Setup/Teardown
/// <summary>
/// Initializes a new instance of the <see cref="FsContext"/> class
/// </summary>
public FsContext() :
base()
{
Database.EnsureCreated();
OnCreated();
}
/// <summary>
/// Initializes a new instance of the <see cref="FsContext"/> class
/// </summary>
/// <param name="options">The options (ab)</param>
public FsContext(DbContextOptions<FsContext> options) :
base(options)
{
OnCreated();
}
#endregion
#region Override OnConfiguring
/// <summary>
/// Ons the configuring using the specified options builder (a. beging, 21.05.2022)
/// </summary>
/// <param name="optionsBuilder">The options builder</param>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured ||
(!optionsBuilder.Options.Extensions.OfType<RelationalOptionsExtension>().Any(ext => !string.IsNullOrEmpty(ext.ConnectionString) || ext.Connection != null) &&
!optionsBuilder.Options.Extensions.Any(ext => !(ext is RelationalOptionsExtension) && !(ext is CoreOptionsExtension))))
{
}
base.OnConfiguring(optionsBuilder);
}
#endregion
#region Public Method HasChanges
/// <summary>
/// Describes whether this instance has changes
/// </summary>
/// <returns>The bool</returns>
public bool HasChanges()
{
return ChangeTracker.Entries().Any(e => e.State == Microsoft.EntityFrameworkCore.EntityState.Added || e.State == Microsoft.EntityFrameworkCore.EntityState.Modified || e.State == Microsoft.EntityFrameworkCore.EntityState.Deleted);
}
#endregion
#region Private Method OnCreated
/// <summary>
/// Ons the created (a. beging, 21.05.2022)
/// </summary>
private void OnCreated()
{
// Database.EnsureCreated();
}
#endregion
}
}
}

View File

@@ -31,10 +31,10 @@ namespace FoodsharingSiegen.Server.Data.Service
{
try
{
var targetProspect = await Context.Prospects.Include(x => x.Interactions).FirstOrDefaultAsync(x => x.Id == interaction.ProspectId);
var targetProspect = await Context.Prospects.Include(x => x.Interactions).FirstOrDefaultAsync(x => x.Id == interaction.ProspectID);
if (targetProspect == null) return new OperationResult<Interaction>(new Exception("Invalid prospect id"));
interaction.ProspectId = Guid.Empty;
interaction.ProspectID = Guid.Empty;
interaction.Created = DateTime.UtcNow;
targetProspect.Interactions.Add(interaction);