如何在数据库中找到真正的价值?

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

【讨论】:

以上是关于如何在数据库中找到真正的价值?的主要内容,如果未能解决你的问题,请参考以下文章

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

猫鼬如何找到具体的价值

大数据的真正价值在哪里?你get到了吗?

如何判断Web3项目的真正价值?

大数据和区块链:招标采购中的应用价值

如何成为一家真正发挥大数据作用的 “数据驱动型公司”?