C#数据库操作简介
\n\n在现代应用开发中,数据库操作是一项关键技能。C# (.NET) 提供了强大的工具来与关系型数据库(PostgreSQL)和文档型数据库(MongoDB)进行交互。本文将介绍这两种数据库的连接基础和CRUD操作。
\n\n本文面向熟悉C#基础的初学者开发者。我们将探讨通过SQL查询(Npgsql)的传统方法,以及现代ORM——Entity Framework Core,还有通过官方驱动操作MongoDB的方法。
\n\n1. 在C#中使用PostgreSQL
\n\nPostgreSQL 是一款强大的开源关系型数据库管理系统。在.NET中,可以使用 Npgsql 包或带有 Npgsql.EntityFrameworkCore.PostgreSQL 提供程序的 Entity Framework Core 来操作它。
1.1 通过Npgsql连接(底层访问)
\n\n通过NuGet安装包:
\n\ndotnet add package Npgsql\n\n简单连接和执行查询的示例:
\n\nusing Npgsql;\n\nstring connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";\n\nusing var conn = new NpgsqlConnection(connectionString);\nconn.Open();\n\nstring sql = "SELECT id, name, age FROM users WHERE age > @minAge";\nusing var cmd = new NpgsqlCommand(sql, conn);\ncmd.Parameters.AddWithValue("minAge", 18);\n\nusing var reader = cmd.ExecuteReader();\nwhile (reader.Read())\n{\n Console.WriteLine($"ID: {reader["id"]}, Name: {reader["name"]}, Age: {reader["age"]}");\n}\n\n1.2 使用Entity Framework Core与PostgreSQL
\n\n安装包:
\n\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\n创建模型和上下文:
\n\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\npublic class AppDbContext : DbContext\n{\n public DbSet<User> Users { get; set; }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");\n }\n}\n\n通过EF Core进行CRUD操作:
\n\nusing var db = new AppDbContext();\n\n// Create\ndb.Users.Add(new User { Name = "安娜", Age = 25 });\ndb.SaveChanges();\n\n// Read\nvar users = db.Users.Where(u => u.Age > 20).ToList();\n\n// Update\nvar user = db.Users.First();\nuser.Age = 30;\ndb.SaveChanges();\n\n// Delete\ndb.Users.Remove(user);\ndb.SaveChanges();\n\n2. 在C#中使用MongoDB
\n\nMongoDB 是一种NoSQL数据库,以BSON文档格式存储数据。在C#中,使用官方驱动 MongoDB.Driver。
2.1 安装和配置连接
\n\n安装包:
\n\ndotnet add package MongoDB.Driver\n\n连接到本地MongoDB服务器:
\n\nusing MongoDB.Driver;\n\nvar client = new MongoClient("mongodb://localhost:27017");\nvar database = client.GetDatabase("mydb");\nvar collection = database.GetCollection<BsonDocument>("users");\n\n2.2 MongoDB的CRUD操作
\n\n创建模型类:
\n\npublic class User\n{\n public MongoDB.Bson.ObjectId Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\n集合操作示例:
\n\nvar collection = database.GetCollection<User>("users");\n\n// Create\nvar newUser = new User { Name = "伊万", Age = 30 };\ncollection.InsertOne(newUser);\n\n// Read\nvar filter = Builders<User>.Filter.Eq(u => u.Name, "伊万");\nvar user = collection.Find(filter).FirstOrDefault();\n\n// Update\nvar update = Builders&l