C# 对象持久化详解
什么是对象持久化
对象持久化是指将内存中的对象数据转换为持久化存储的数据,以便在程序关闭后仍然能够重新读取数据。这种方式常用于数据存储,包括关系数据库等。
C# 中的对象持久化
在 C# 中,我们可以使用多种方式实现对象持久化,最常用的方式是使用 Entity Framework 和 JSON 序列化。
使用 Entity Framework 进行对象持久化
Entity Framework 是 C# 中的一种 ORM 框架,ORM 意为 Object Relational Mapping,即对象关系映射。它可以使开发者使用面向对象的方式来操作数据库,而不必关心底层 SQL 语句。
以下是使用 Entity Framework 进行对象持久化的基本步骤:
第一步:在 Visual Studio 中添加 Entity Framework
使用 NuGet 包管理器,在项目中添加 Entity Framework。
第二步:定义实体模型
在项目中定义实体模型,即代码中的类,在数据库中的表结构。这些模型将与 Entity Framework 一起使用。
例如,以下的代码定义了一个名为 Person
的类,其中包含了一个 Id
属性和一个 Name
属性:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
第三步:创建数据库上下文
创建一个继承自 DbContext
的类,用于表示应用程序中与数据库进行交互的上下文。
例如,以下的代码定义了一个名为 MyDbContext
的类,它包含一个 Persons
属性,表示数据库中的 Person 表:
public class MyDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
}
第四步:写入数据
现在,你可以在 C# 中创建一个 Person
对象,使用 MyDbContext
类与数据库进行交互,将它写入数据库。
using (var db = new MyDbContext())
{
var person = new Person { Name = "Tom" };
db.Persons.Add(person);
db.SaveChanges();
}
以上代码将创建一个名为 Tom
的新用户,并将它写入数据库中。
第五步:读取数据
使用 Entity Framework 读取数据库中的数据非常简单。只需要:
using (var db = new MyDbContext())
{
foreach (var person in db.Persons)
{
Console.WriteLine(person.Name);
}
}
以上代码将打印出数据库中所有用户的名字。
使用 JSON 序列化进行对象持久化
另一种常见的对象持久化方法是使用 JSON 序列化。JSON 是一种轻量级的数据交换格式,具有良好的兼容性和跨平台性。
以下是使用 JSON 序列化进行对象持久化的基本步骤:
第一步:添加 Newtonsoft.Json 组件
使用 NuGet 包管理器,在项目中添加 Newtonsoft.Json 组件。
第二步:创建一个类
例如,以下的代码创建了一个名为 Person
的类,其中包含了一个 Id
属性和一个 Name
属性:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
第三步:将对象序列化为 JSON
使用 Newtonsoft.Json 序列化库将对象序列化为 JSON 格式的字符串。以下的代码将创建一个名为 Tom
的新用户,并使用 JSON 序列化将其保存到本地文件中:
var person = new Person { Id = 1, Name = "Tom" };
var json = JsonConvert.SerializeObject(person);
File.WriteAllText("person.json", json);
以上代码将创建一个名为 person.json
的文件,并将序列化后的 JSON 字符串写入其中。
第四步:将 JSON 反序列化为对象
使用 Newtonsoft.Json 序列化库将 JSON 格式的字符串反序列化为对象。
var json = File.ReadAllText("person.json");
var person = JsonConvert.DeserializeObject<Person>(json);
以上代码将从本地文件中读取 person.json
,并将其反序列化为 Person
对象。
示例
以下是一个使用 Entity Framework 进行对象持久化的简单示例:
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
}
class Program
{
static void Main(string[] args)
{
using (var db = new MyDbContext())
{
var person = new Person { Name = "Tom" };
db.Persons.Add(person);
db.SaveChanges();
foreach (var p in db.Persons)
{
Console.WriteLine(p.Name);
}
}
}
}
以下是一个使用 JSON 序列化进行对象持久化的简单示例:
using System;
using System.IO;
using Newtonsoft.Json;
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
var person = new Person { Id = 1, Name = "Tom" };
var json = JsonConvert.SerializeObject(person);
File.WriteAllText("person.json", json);
var jsonStr = File.ReadAllText("person.json");
var person2 = JsonConvert.DeserializeObject<Person>(jsonStr);
Console.WriteLine(person2.Name);
}
}
结论
在 C# 中,我们可以使用 Entity Framework 和 JSON 序列化两种方式实现对象持久化。其中,Entity Framework 是更适合大型应用程序的方式,而 JSON 序列化则更适合简单的持久化需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 对象持久化详解 - Python技术站