通常您有一个表示数据的模型类。这是一个:
public class Computer
{
public string SerialNumber {get; set;}
public string Name {get; set;}
public List<string> InstalledSoftware {get; set;}
}
现在您有了一个可以表示数据的类,只需保存或序列化它即可。您无权访问 SQL Server 数据库。没关系。还有其他选择。您可以将其存储为结构化文件格式。 CSV 对此并不好,因为每台计算机可能有多个 InstalledSoftware,并且很难使用 CSV 正确处理它。但其他基于文本的格式,例如 XML 和 JSON 非常适合此操作。您还可以使用“NoSQL”类型的数据库,例如 MongoDB 或 RavenDB。你也可以使用SQLite,非常轻量级。
让我们从一些示例数据开始。
List<Computer> computers = new List<Computer>();
computers.Add(new Computer(){
SerialNumber="ABC123",
Name="BOB-LAPTOP",
InstalledSoftware = new List<string>(){
"Notepad", "Visual Studio", "Word"
}
});
computers.Add(new Computer(){
SerialNumber="XYZ456",
Name="JASON-WORKSTATION",
InstalledSoftware = new List<string>(){
"Notepad++", "Visual Studio Code", "Word"
}
});
computers.Add(new Computer(){
SerialNumber="LMN789",
Name="NANCY-SURFACE3",
InstalledSoftware = new List<string>(){
"Outlook", "PowerPoint", "Excel"
}
});
那么这只是保存数据的问题。让我们尝试使用 XML:
var xmlSerializer = new XmlSerializer(typeof(Computer));
using(var stringWriter = new StringWriter())
{
using (var xmlWriter = XmlWriter.Create(stringWriter))
{
xmlSerializer .Serialize(writer, computers);
var xml = stringWriter.ToString();
File.WriteAllText(Server.MapPath("~/App_Data/computers.xml"));
}
}
或者使用 JSON:
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(computers);
File.WriteAllText(Server.MapPath("~/App_Data/computers.json"));
使用 MongoDB:
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("ComputerDB");
var computerCollection= database.GetCollection<Computer>("Computers");
foreach(var computer in computers)
{
computerCollection.Insert(computer);
}
注意,我没有测试过这段代码。很可能有bug。我的目标是给你一个起点,不一定是 100% 的工作代码。我有一段时间没有序列化 XML,我通常使用 JSON.NET 而不是内置的 JavaScriptSerializer。
还请注意,如果有任何可能两个用户可能同时访问数据,您需要注意 XML 和 JSON 方法以避免两个人尝试写入文件。那是 MongoDB 更好的地方,但您必须在某处安装服务器软件。