Есть первая модель
public class Case
{
public int Id { get; set; }
public string caseName { get; set; }
public int caseNumber { get; set; }
public string caseShortName { get; set; }
public Price Price { get; set; }
}
Вторая модель
public class Price
{
public int Id { get; set; }
public double casePrice { get; set; }
public int CaseId { get; set; }
public Case Case { get; set; }
}
и третья модель, куда будут проецироваться название кейса и его цена
public class PriceName
{
public int Id { get; set; }
public string Name { get; set; }
public double TotalPrice { get; set; }
}
Основной код
public class ApplicationContext : DbContext
{
public DbSet<Case> Cases { get; set; } = null!;
public DbSet<Price> Prices { get; set; } = null!;
public DbSet<PriceName> PriceNames { get; set; } = null!;
public ApplicationContext()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql("Server = localhost; Port = 5433; Database = test; Username = postgres; Password = root");
}
}
class Program
{
static void Main(string[] args)
{
using(ApplicationContext db = new ApplicationContext())
{
db.Database.EnsureDeleted();
db.Database.EnsureCreated();
Case riptide = new Case { caseName = "Operation Riptide Case", caseNumber = 176264317, caseShortName = "riptide"};
Case glove = new Case { caseName = "Gloves Case", caseNumber = 175854202, caseShortName = "gloves" };
Case spectrum = new Case { caseName = "Spectrum Case", caseNumber = 175880240, caseShortName = "spectrum" };
Case prisma = new Case { caseName = "Prisma Case", caseNumber = 176042493, caseShortName = "prisma" };
Case fracture = new Case { caseName = "Fracture Case", caseNumber = 176185874, caseShortName = "fracture" };
Case gamma = new Case { caseName = "Gamma Case", caseNumber = 156110183, caseShortName = "gamma" };
Case bloodhound = new Case { caseName = "BloodHound Case", caseNumber = 49359031, caseShortName = "bloodhound" };
Case revolver = new Case { caseName = "Revolver Case", caseNumber = 84444464, caseShortName = "revolver" };
db.Cases.AddRange(riptide, glove, spectrum, prisma, fracture, gamma, bloodhound, revolver);
db.SaveChanges();
Price riptidePrice = new Price { casePrice = 0.58, Case = riptide };
Price glovePrice = new Price { casePrice = 1.84, Case = glove };
Price spectrumPrice = new Price { casePrice = 0.61, Case = spectrum };
Price prismaPrice = new Price { casePrice = 0.07, Case = prisma };
Price fracturePrice = new Price { casePrice = 0.07, Case = fracture };
Price gammaPrice = new Price { casePrice = 0.35, Case = gamma };
Price bloodhoundPrice = new Price { casePrice = 0.50, Case = bloodhound };
Price revolverPrice = new Price { casePrice = 0.12, Case = revolver };
db.Prices.AddRange(riptidePrice, glovePrice, spectrumPrice, prismaPrice, fracturePrice, gammaPrice, bloodhoundPrice, revolverPrice);
db.SaveChanges();
}
}
}
и второй applicationcontext где будут проецироваться данные, тут приходит запрос от юзера типа дай цену кейса с названием riptide. и этот результат должен появиться в базе данных в таблице
using(ApplicationContext db = new ApplicationContext())
{
var report = db.Cases.Where(x => x.caseShortName == "riptide").Select(s => new PriceName
{
Name = s.caseName,
TotalPrice = s.Price.casePrice
});
}
но у меня данные не появляются в таблице pricename и выходит ошибка connection is busy.