gpt4 book ai didi

C# - 使用 LINQ 更新行

转载 作者:太空宇宙 更新时间:2023-11-03 18:38:26 25 4
gpt4 key购买 nike

我正在改进控制台应用程序,目前我无法让它更新行,而不仅仅是创建一个包含更新信息的新行。

class Program
{
List<DriveInfo> driveList = DriveInfo.GetDrives().Where(x => x.IsReady).ToList<DriveInfo>(); //Get all the drive info
Server server = new Server(); //Create the server object
ServerDrive serverDrives = new ServerDrive();

public static void Main()
{
Program c = new Program();
c.RealDriveInfo();
c.WriteInToDB();
}

public void RealDriveInfo()
{


//Insert information of one server
server.ServerID = 0; //(PK) ID Auto-assigned by SQL
server.ServerName = string.Concat(System.Environment.MachineName);

//Inserts ServerDrives information.
for (int i = 0; i < driveList.Count; i++)
{

//All Information used in dbo.ServerDrives
serverDrives.DriveLetter = driveList[i].Name;
serverDrives.TotalSpace = driveList[i].TotalSize;
serverDrives.DriveLabel = driveList[i].VolumeLabel;
serverDrives.FreeSpace = driveList[i].TotalFreeSpace;
serverDrives.DriveType = driveList[i].DriveFormat;
server.ServerDrives.Add(serverDrives);

}
}

public void WriteInToDB()
{
//Add the information to an SQL Database using Linq.
DataClasses1DataContext db = new DataClasses1DataContext(@"sqlserver");
db.Servers.InsertOnSubmit(server);
db.SubmitChanges();

我希望它用来更新信息的是 RealDriveInfo() 方法,因此它不会创建新条目,而是通过运行该方法然后从中插入信息来更新当前存储的信息方法,如果需要,将输入一个新条目,而不是每次有更新信息时都简单地输入新条目。

目前它正在运行该方法,收集相关数据,然后将其作为新行输入到两个表中。

任何帮助将不胜感激:)

最佳答案

它每次都会创建一个新的数据库条目,因为您每次都在创建一个新的服务器对象,然后调用 InsertOnSubmit() - 它会插入(创建)一条新记录。

我不完全确定您要做什么,但是数据库更新将涉及选择现有记录,修改它,然后将其附加回数据上下文并调用 SubmitChanges() .

这篇文章 Updating Entities (Linq toSQL) 可能会有所帮助。

关于C# - 使用 LINQ 更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com