fix delete x PROD + reshape codice

This commit is contained in:
Samuele E. Locatelli
2021-03-05 18:03:29 +01:00
parent f08debedfb
commit d0c3c4349b
8 changed files with 437 additions and 365 deletions
@@ -6,165 +6,183 @@ using EgtBEAMWALL.DataLayer.DatabaseModels;
namespace EgtBEAMWALL.DataLayer.Controllers
{
public class RawPartController : IDisposable
{
private DatabaseContext dbCtx;
public class MachGroupController : IDisposable
{
#region Private Fields
public RawPartController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
private DatabaseContext dbCtx;
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by RawPartDbId
/// </summary>
/// <param name="RawPartDbId"></param>
/// <returns></returns>
public RawPartModel FindByRawPartDbId(int RawPartDbId)
{
return dbCtx
.RawPartList
.Where(x => x.RawPartDbId == RawPartDbId)
.SingleOrDefault();
}
/// <summary>
/// Get record by RawPartId
/// </summary>
/// <param name="RawPartId"></param>
/// <returns></returns>
public RawPartModel FindByRawPartId(int RawPartId)
{
return dbCtx
.RawPartList
.Where(x => x.RawPartId == RawPartId)
.SingleOrDefault();
}
/// <summary>
/// Get paginated data from DB (ASC ordered)
/// </summary>
/// <param name="RawPartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<RawPartModel> GetPaginatedAsc(int RawPartDbIdStart, int numRecord)
{
int numEnd = RawPartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.RawPartList
.Where(x => x.RawPartDbId <= RawPartDbIdStart)
.OrderBy(x => x.RawPartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get paginated data from DB (DESC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<RawPartModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.RawPartList
.Where(x => x.RawPartDbId <= PartDbIdStart)
.OrderByDescending(x => x.RawPartDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get filtered data by RawPartectId (ASC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<RawPartModel> GetByProdAsc(int ProdDbId)
{
// retrieve
return dbCtx
.RawPartList
.Where(x => x.ProdDbId == ProdDbId)
.OrderBy(x => x.ProdDbId)
.ToList();
}
/// <summary>
/// Get filtered data by RawPartectId (DESC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<RawPartModel> GetByProdDesc(int ProdDbId)
{
// retrieve
return dbCtx
.RawPartList
.Where(x => x.ProdDbId == ProdDbId)
.OrderByDescending(x => x.ProdDbId)
.ToList();
}
#endregion Private Fields
/// <summary>
/// Create record on DB
/// </summary>
/// <param name="newRawPartId"></param>
/// <param name="description"></param>
/// <returns></returns>
public RawPartModel Create(int newRawPartId, string description)
{
RawPartModel newRawPart = new RawPartModel() { RawPartId=newRawPartId, Description=description, State= RawPartState.ND };
#region Public Constructors
try
{
// Add to database
dbCtx.RawPartList.Add(newRawPart);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
public MachGroupController()
{
// Initialize database context
dbCtx = new DatabaseContext();
}
return newRawPart;
}
#endregion Public Constructors
/// <summary>
/// Update single RawPart
/// </summary>
/// <param name="updItem">Item to update (with updated values)</param>
/// <returns></returns>
public bool Update(RawPartModel updItem)
{
bool done = false;
var item2update = dbCtx
.RawPartList
.Where(x => x.RawPartDbId == updItem.RawPartDbId)
.SingleOrDefault();
try
{
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
#region Public Methods
//// update, vers 2
//dbCtx.BTLPartList.Remove(item2del);
//dbCtx.BTLPartList.Add(updItem);
/// <summary>
/// Create record on DB
/// </summary>
/// <param name="newMachGroupId"></param>
/// <param name="description"></param>
/// <returns></returns>
public MachGroupModel Create(int newMachGroupId, string description)
{
MachGroupModel newMachGroup = new MachGroupModel() { MachGroupId = newMachGroupId, Description = description, State = MachGroupState.ND };
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
}
}
try
{
// Add to database
dbCtx.MachGroupList.Add(newMachGroup);
// Commit changes
dbCtx.SaveChanges();
}
catch
{ }
return newMachGroup;
}
public void Dispose()
{
// Clear database context
dbCtx.Dispose();
}
/// <summary>
/// Get record by MachGroupDbId
/// </summary>
/// <param name="MachGroupDbId"></param>
/// <returns></returns>
public MachGroupModel FindByMachGroupDbId(int MachGroupDbId)
{
return dbCtx
.MachGroupList
.Where(x => x.MachGroupDbId == MachGroupDbId)
.SingleOrDefault();
}
/// <summary>
/// Get record by MachGroupId
/// </summary>
/// <param name="MachGroupId"></param>
/// <returns></returns>
public MachGroupModel FindByMachGroupId(int MachGroupId)
{
return dbCtx
.MachGroupList
.Where(x => x.MachGroupId == MachGroupId)
.SingleOrDefault();
}
/// <summary>
/// Get filtered data by MachGroupectId (ASC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<MachGroupModel> GetByProdAsc(int ProdDbId)
{
// retrieve
return dbCtx
.MachGroupList
.Where(x => x.ProdDbId == ProdDbId)
.OrderBy(x => x.ProdDbId)
.ToList();
}
/// <summary>
/// Get filtered data by MachGroupectId (DESC ordered)
/// </summary>
/// <param name="ProdDbId"></param>
/// <returns></returns>
public List<MachGroupModel> GetByProdDesc(int ProdDbId)
{
// retrieve
return dbCtx
.MachGroupList
.Where(x => x.ProdDbId == ProdDbId)
.OrderByDescending(x => x.ProdDbId)
.ToList();
}
/// <summary>
/// Get paginated data from DB (ASC ordered)
/// </summary>
/// <param name="MachGroupDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<MachGroupModel> GetPaginatedAsc(int MachGroupDbIdStart, int numRecord)
{
int numEnd = MachGroupDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.MachGroupList
.Where(x => x.MachGroupDbId <= MachGroupDbIdStart)
.OrderBy(x => x.MachGroupDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Get paginated data from DB (DESC ordered)
/// </summary>
/// <param name="PartDbIdStart"></param>
/// <param name="numRecord"></param>
/// <returns></returns>
public List<MachGroupModel> GetPaginatedDesc(int PartDbIdStart, int numRecord)
{
int numEnd = PartDbIdStart - numRecord;
// check numEnd
if (numEnd < 0)
numEnd = 0;
// retrieve
return dbCtx
.MachGroupList
.Where(x => x.MachGroupDbId <= PartDbIdStart)
.OrderByDescending(x => x.MachGroupDbId)
.Take(numRecord)
.ToList();
}
/// <summary>
/// Update single MachGroup
/// </summary>
/// <param name="updItem">Item to update (with updated values)</param>
/// <returns></returns>
public bool Update(MachGroupModel updItem)
{
bool done = false;
var item2update = dbCtx
.MachGroupList
.Where(x => x.MachGroupDbId == updItem.MachGroupDbId)
.SingleOrDefault();
try
{
// update, vers 1...
dbCtx.Entry(item2update).CurrentValues.SetValues(updItem);
//// update, vers 2
//dbCtx.BTLPartList.Remove(item2del);
//dbCtx.BTLPartList.Add(updItem);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
#endregion Public Methods
}
}
@@ -208,6 +208,31 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return done;
}
public bool DeleteProd(int ProdId)
{
bool done = false;
var currProd = FindByProdId(ProdId);
// sel delle BTLParts da proj
var machGroup2del = dbCtx
.MachGroupList
.Where(x => x.ProdDbId == currProd.ProdDbId);
try
{
// remove from database
dbCtx.MachGroupList.RemoveRange(machGroup2del);
dbCtx.ProdList.Remove(currProd);
// Commit changes
dbCtx.SaveChanges();
done = true;
}
catch
{ }
return done;
}
public void Dispose()
{
// Clear database context
+99 -83
View File
@@ -8,35 +8,58 @@ using System.Text;
using EgtBEAMWALL.DataLayer.DatabaseModels;
using EgtBEAMWALL.DataLayer.Migrations;
using System.ServiceProcess;
//using EgtBEAMWALL.DataLayer.Migrations;
//using EgtBEAMWALL.DataLayer.Controllers;
namespace EgtBEAMWALL.DataLayer
{
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class DatabaseContext : DbContext
{
#region Public Fields
[DbConfigurationType(typeof(MySqlEFConfiguration))]
public class DatabaseContext : DbContext
{
/// <summary>
/// BTLParts management
/// </summary>
public DbSet<BTLPartModel> BTLPartList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<ProdModel> ProdList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<ProjModel> ProjList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<MachGroupModel> RawPartList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<PartModel> PartList { get; set; }
public static string CONNECTION_STRING = $"server={Constants.DATABASE_SERV};port=3306;database={Constants.DATABASE_NAME};uid={Constants.DATABASE_USER};pwd={Constants.DATABASE_PWD};sslmode=None";
#endregion Public Fields
#region Public Constructors
//providerName="System.Data.EntityClient"
public DatabaseContext() : base("DefaultConnection")
{
}
#endregion Public Constructors
#region Public Properties
/// <summary>
/// BTLParts management
/// </summary>
public DbSet<BTLPartModel> BTLPartList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<MachGroupModel> MachGroupList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<PartModel> PartList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<ProdModel> ProdList { get; set; }
/// <summary>
/// Parts management
/// </summary>
public DbSet<ProjModel> ProjList { get; set; }
#endregion Public Properties
#if false
/// <summary>
@@ -45,76 +68,69 @@ namespace EgtBEAMWALL.DataLayer
public static bool AdvDataModel { get; set; } = false;
#endif
//providerName="System.Data.EntityClient"
#region Private Methods
public static string CONNECTION_STRING = $"server={Constants.DATABASE_SERV};port=3306;database={Constants.DATABASE_NAME};uid={Constants.DATABASE_USER};pwd={Constants.DATABASE_PWD};sslmode=None";
public DatabaseContext() : base("DefaultConnection")
{
}
private static string getDbServiceName()
{
ServiceController[] services = ServiceController.GetServices();
var service = services.FirstOrDefault(s => s.ServiceName == "MariaDB");
if (service != null)
return service.DisplayName;
public static DatabaseContext Create()
{
return new DatabaseContext();
}
service = services.FirstOrDefault(s => s.ServiceName == "MySQL");
if (service != null)
return service.DisplayName;
private static string getDbServiceName()
{
ServiceController[] services = ServiceController.GetServices();
var service = services.FirstOrDefault(s => s.ServiceName == "MariaDB");
if (service != null)
return service.DisplayName;
return "";
}
service = services.FirstOrDefault(s => s.ServiceName == "MySQL");
if (service != null)
return service.DisplayName;
#endregion Private Methods
return "";
#region Public Methods
}
public static DatabaseContext Create()
{
return new DatabaseContext();
}
public static bool SetUpDbConnectionAndDbConfig()
{
try
{
String serviceName = getDbServiceName();
if (serviceName.Equals(""))
{
return false;
}
public static bool SetUpDbConnectionAndDbConfig()
{
try
{
String serviceName = getDbServiceName();
if (serviceName.Equals(""))
{
return false;
}
ServiceController service = new ServiceController(serviceName);
try
{
TimeSpan timeout = TimeSpan.FromSeconds(Constants.DATABASE_PROCESS_TIMEOUT);
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch (Exception ex)
{
return false;
}
ServiceController service = new ServiceController(serviceName);
try
{
TimeSpan timeout = TimeSpan.FromSeconds(Constants.DATABASE_PROCESS_TIMEOUT);
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch (Exception ex)
{
return false;
}
System.Data.Entity.Database.SetInitializer<DatabaseContext>(null);
var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
{
// Run migrations and seed.
migrator.Update();
}
}
catch (Exception ex)
{
return false;
}
return true;
}
System.Data.Entity.Database.SetInitializer<DatabaseContext>(null);
var migrator = new DbMigrator(new Configuration());
if (migrator.GetPendingMigrations().Any())
{
// Run migrations and seed.
migrator.Update();
}
}
catch (Exception ex)
{
return false;
}
return true;
}
}
#endregion Public Methods
}
}
@@ -7,74 +7,77 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
/// <summary>
/// Tabella di gestione dei PROTOTIPI dal file BTL (part + quantità)
/// </summary>
[Table("BTLPartList")]
public class BTLPartModel
{
/// <summary>
/// Chiave univoca
/// </summary>
[Key, Column("BTLPartDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PartDbId { get; set; }
/// <summary>
/// Tabella di gestione dei PROTOTIPI dal file BTL (part + quantità)
/// </summary>
[Table("BTLPartList")]
public class BTLPartModel
{
#region Public Properties
/// <summary>
/// PartId dal programma
/// </summary>
[Column("BTLPartId")]
public int PartId { get; set; }
[Column("BTLPart_CalcState")]
public int CALC_State { get; set; } = -1;
[Column("BTLPart_PDN")]
public int PDN { get; set; } = 0;
/// <summary>
/// Quantità richiesta
/// </summary>
[Column("BTLPart_CNT")]
public int CNT { get; set; } = 0;
[Column("BTLPart_DO")]
public bool DO { get; set; } = false;
[Column("BTLPart_DO")]
public bool DO { get; set; } = false;
[Column("BTLPart_NAM")]
public string NAM { get; set; } = "";
[Column("BTLPart_DON")]
public int DON { get; set; } = 0;
[Column("BTLPart_W")]
public double W { get; set; } = 0;
[Column("BTLPart_GRP")]
public string GRP { get; set; } = "";
[Column("BTLPart_L")]
public double L { get; set; } = 0;
[Column("BTLPart_H")]
public double H { get; set; } = 0;
[Column("BTLPart_H")]
public double H { get; set; } = 0;
[Column("BTLPart_L")]
public double L { get; set; } = 0;
[Column("BTLPart_MAT")]
public string MAT { get; set; } = "";
[Column("BTLPart_MAT")]
public string MAT { get; set; } = "";
/// <summary>
/// Quantità richiesta
/// </summary>
[Column("BTLPart_CNT")]
public int CNT { get; set; } = 0;
[Column("BTLPart_NAM")]
public string NAM { get; set; } = "";
[Column("BTLPart_TBP")]
public int TBP { get; set; } = 0;
/// <summary>
/// Chiave univoca
/// </summary>
[Key, Column("BTLPartDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PartDbId { get; set; }
[Column("BTLPart_DON")]
public int DON { get; set; } = 0;
/// <summary>
/// PartId dal programma
/// </summary>
[Column("BTLPartId")]
public int PartId { get; set; }
[Column("BTLPart_ROT")]
public int ROT { get; set; } = 0;
[Column("BTLPart_PDN")]
public int PDN { get; set; } = 0;
[Column("BTLPart_GRP")]
public string GRP { get; set; } = "";
[Column("ProjDbId")]
public int ProjDbId { get; set; }
[Column("BTLPart_UNT")]
public int UNT { get; set; } = 0;
[ForeignKey("ProjDbId")]
public ProjModel Project { get; set; }
[Column("BTLPart_CalcState")]
public int CALC_State { get; set; } = -1;
[Column("BTLPart_ROT")]
public int ROT { get; set; } = 0;
[Column("ProjDbId")]
public int ProjDbId { get; set; }
[Column("BTLPart_TBP")]
public int TBP { get; set; } = 0;
[ForeignKey("ProjDbId")]
public ProjModel Project { get; set; }
[Column("BTLPart_UNT")]
public int UNT { get; set; } = 0;
}
}
[Column("BTLPart_W")]
public double W { get; set; } = 0;
#endregion Public Properties
}
}
@@ -7,62 +7,65 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
/// <summary>
/// Tabelal delle singole istsanze prodotte\
/// </summary>
[Table("PartList")]
public class PartModel
{
[Key, Column("PartDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PartDbId { get; set; }
/// <summary>
/// Tabelal delle singole istsanze prodotte\
/// </summary>
[Table("PartList")]
public class PartModel
{
#region Public Properties
[Column("PartId")]
public int PartId { get; set; }
[ForeignKey("BTLPartDbId")]
public BTLPartModel BTLPart { get; set; }
[Column("Part_PDN")]
public int PDN { get; set; } = 0;
[Column("BTLPartDbId")]
public int BTLPartDbId { get; set; }
[Column("Part_NAM")]
public string NAM { get; set; } = "";
[Column("Part_CalcState")]
public int CALC_State { get; set; } = -1;
[Column("Part_W")]
public double W { get; set; } = 0;
[Column("Part_L")]
public double L { get; set; } = 0;
[Column("Part_H")]
public double H { get; set; } = 0;
[Column("Part_GRP")]
public string GRP { get; set; } = "";
[Column("Part_MAT")]
public string MAT { get; set; } = "";
[Column("Part_H")]
public double H { get; set; } = 0;
[Column("Part_ROT")]
public int ROT { get; set; } = 0;
[Column("Part_L")]
public double L { get; set; } = 0;
[Column("Part_GRP")]
public string GRP { get; set; } = "";
[Column("Part_MAT")]
public string MAT { get; set; } = "";
[Column("Part_CalcState")]
public int CALC_State { get; set; } = -1;
[Column("Part_NAM")]
public string NAM { get; set; } = "";
/// <summary>
/// Stato della singola Part (da enum)
/// </summary>
[Column("Part_State")]
public PartState State { get; set; } = PartState.ND;
[Key, Column("PartDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PartDbId { get; set; }
[Column("BTLPartDbId")]
public int BTLPartDbId { get; set; }
[Column("PartId")]
public int PartId { get; set; }
[ForeignKey("BTLPartDbId")]
public BTLPartModel BTLPart { get; set; }
[Column("Part_PDN")]
public int PDN { get; set; } = 0;
[Column("RawPartDbId")]
public int? RawPartDbId { get; set; }
[ForeignKey("RawPartDbId")]
public virtual MachGroupModel RawPart { get; set; }
[ForeignKey("RawPartDbId")]
public virtual MachGroupModel RawPart { get; set; }
[Column("RawPartDbId")]
public int? RawPartDbId { get; set; }
}
}
[Column("Part_ROT")]
public int ROT { get; set; } = 0;
/// <summary>
/// Stato della singola Part (da enum)
/// </summary>
[Column("Part_State")]
public PartState State { get; set; } = PartState.ND;
[Column("Part_W")]
public double W { get; set; } = 0;
#endregion Public Properties
}
}
@@ -7,26 +7,29 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace EgtBEAMWALL.DataLayer.DatabaseModels
{
/// <summary>
/// Tabella deiu raggruppamenti PROJ in forma di PROD
/// </summary>
[Table("ProdList")]
public class ProdModel
{
[Key, Column("ProdDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProdDbId { get; set; }
/// <summary>
/// Tabella deiu raggruppamenti PROJ in forma di PROD
/// </summary>
[Table("ProdList")]
public class ProdModel
{
#region Public Properties
[Column("ProdId")]
public int ProdId { get; set; }
[Column("Prod_Description")]
public string Description { get; set; } = "";
[Column("Prod_Description")]
public string Description { get; set; } = "";
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("Prod_Lock")]
public bool Locked { get; set; } = false;
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("Prod_Lock")]
public bool Locked { get; set; } = false;
[Key, Column("ProdDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProdDbId { get; set; }
}
}
[Column("ProdId")]
public int ProdId { get; set; }
#endregion Public Properties
}
}
@@ -13,11 +13,7 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
[Table("ProjList")]
public class ProjModel
{
[Key, Column("ProjDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProjDbId { get; set; }
[Column("ProjId")]
public int ProjId { get; set; }
#region Public Properties
[Column("Proj_BTLFileName")]
public string BTLFileName { get; set; } = "";
@@ -27,17 +23,25 @@ namespace EgtBEAMWALL.DataLayer.DatabaseModels
/// </summary>
[Column("Proj_IsNew")]
public bool IsNew { get; set; } = true;
/// <summary>
/// Stato locked (quando aperto da un dispositivo in rete)
/// </summary>
[Column("Proj_Lock")]
public bool Locked { get; set; } = false;
[ForeignKey("ProdDbId")]
public virtual ProdModel Prod { get; set; }
[Column("ProdDbId")]
public int? ProdDbId { get; set; }
[ForeignKey("ProdDbId")]
public virtual ProdModel Prod { get; set; }
[Key, Column("ProjDbId"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ProjDbId { get; set; }
[Column("ProjId")]
public int ProjId { get; set; }
#endregion Public Properties
}
}
}
@@ -59,7 +59,7 @@
<ItemGroup>
<Compile Include="Constants.cs" />
<Compile Include="Controllers\ProdController.cs" />
<Compile Include="Controllers\RawPartController.cs" />
<Compile Include="Controllers\MachGroupController.cs" />
<Compile Include="Controllers\ProjController.cs" />
<Compile Include="Controllers\BTLPartController.cs" />
<Compile Include="DatabaseContext.cs" />
@@ -67,7 +67,7 @@
<Compile Include="DatabaseModels\BTLPartModel.cs" />
<Compile Include="DatabaseModels\ProdModel.cs" />
<Compile Include="DatabaseModels\ProjModel.cs" />
<Compile Include="DatabaseModels\RawPartModel.cs" />
<Compile Include="DatabaseModels\MachGroupModel.cs" />
<Compile Include="DbManager.cs" />
<Compile Include="Enums.cs" />
<Compile Include="Migrations\202103031811160_InitDb.cs" />