如何在数据库中找到真正的价值?
Posted
技术标签:
【中文标题】如何在数据库中找到真正的价值?【英文标题】:How to find true value in database? 【发布时间】:2022-01-22 06:31:21 【问题描述】:我希望能够在数据库中的某些内容为真时打印收据。例如,clawcutting,它应该打印“这是你的收据”+claw。但是当我在数据库中设置 ClawCutting 时,它仍然会打印“错误”。我真的不明白为什么它在数据库中找不到它?
public void DeleteFromService()
using (var db = new ApplicationDbContext())
double claw = 2.99;
double hair = 3.99;
double washing = 4.99;
Console.WriteLine("Add your booking number on your service");
Services s = new Services();
s.Id = Convert.ToInt32(Console.ReadLine());
if(s.ClawCutting == true)
Console.WriteLine("Here are your receipt" + claw);
else if(s.HairCut == true)
Console.WriteLine("Here are your receipt" + hair);
else if (s.Washing == true)
Console.WriteLine("Here are your receipt" + washing);
else
Console.WriteLine("Error");
db.Services.Remove(s);
db.SaveChanges();
【问题讨论】:
您的代码永远不会从数据库中加载任何内容。Service
是一个新对象,它的所有属性都将具有默认值。如果要加载特定项目,请使用 var s=db.Services.Find(id);
其中id
要加载的项目的主键值
根据代码,您正在创建“s”,然后尝试读取标志的值;我没有看到使用数据库填充对象数据的任何函数或操作。
似乎您希望发生很多魔术,设置Id
属性会神奇地从数据库中为具有给定ID 的对象加载数据。这要求太多了。
【参考方案1】:
您的代码永远不会从数据库中加载任何内容。 Service
是一个新对象,它的所有属性都将具有默认值。如果要加载特定项目,请使用 DbSet.Find where id
要加载项目的主键值
var id=Convert.ToInt32(Console.ReadLine());
var s=db.Services.Find(id);
if(s == null)
Console.WriteLine($"No service with id was found");
return;
这两种方法将从数据库中删除服务,因此请确保仅在您真正需要时才使用它们:
db.Services.Remove(s);
db.SaveChanges();
【讨论】:
以上是关于如何在数据库中找到真正的价值?的主要内容,如果未能解决你的问题,请参考以下文章