这里是每个框架的一个示例代码片段:
Entity Framework Core (EF Core)
模型类
using System.ComponentModel.DataAnnotations;
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
}
DbContext 配置
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("YourConnectionString");
}
}
CRUD 操作
using (var context = new MyDbContext())
{
// 创建
var product = new Product
{
Name = "New Product",
Price = 9.99m,
CategoryId = 1
};
context.Products.Add(product);
context.SaveChanges();
// 读取
var productById = context.Products.Find(1);
// 更新
productById.Name = "Updated Product";
context.SaveChanges();
// 删除
context.Products.Remove(productById);
context.SaveChanges();
}
Dapper
模型类
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
}
Dapper 连接和查询
using System.Data.SqlClient;
using Dapper;
var connectionString = "YourConnectionString";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 创建
var insertQuery = "INSERT INTO Products (Name, Price, CategoryId) VALUES (@Name, @Price, @CategoryId); SELECT SCOPE_IDENTITY();";
var productId = connection.ExecuteScalar<int>(insertQuery, new { Name = "New Product", Price = 9.99m, CategoryId = 1 });
// 读取
var selectQuery = "SELECT * FROM Products WHERE Id = @Id";
var product = connection.QueryFirstOrDefault<Product>(selectQuery, new { Id = productId });
// 更新
var updateQuery = "UPDATE Products SET Name = @Name, Price = @Price WHERE Id = @Id";
connection.Execute(updateQuery, new { Name = "Updated Product", Price = 10.99m, Id = productId });
// 删除
var deleteQuery = "DELETE FROM Products WHERE Id = @Id";
connection.Execute(deleteQuery, new { Id = productId });
}
NHibernate
映射文件
在 NHibernate 中,通常会使用 XML 或 Fluent NHibernate 来配置映射。以下是一个简单的 XML 映射示例:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Product" table="Products">
<id name="Id" column="Id" type="int">
<generator class="native"/>
</id>
<property name="Name" column="Name" type="string"/>
<property name="Price" column="Price" type="decimal"/>
<property name="CategoryId" column="CategoryId" type="int"/>
</class>
</hibernate-mapping>
NHibernate 配置和 CRUD 操作
using NHibernate;
using NHibernate.Cfg;
var cfg = new Configuration();
cfg.Configure(); // 加载 hibernate.cfg.xml 配置文件
cfg.AddAssembly(typeof(Product).Assembly); // 注册映射
var sessionFactory = cfg.BuildSessionFactory();
using (var session = sessionFactory.OpenSession())
using (var transaction = session.BeginTransaction())
{
// 创建
var product = new Product
{
Name = "New Product",
Price = 9.99m,
CategoryId = 1
};
session.Save(product);
transaction.Commit();
// 读取
var productById = session.Get<Product>(product.Id);
// 更新
productById.Name = "Updated Product";
session.Update(productById);
transaction.Commit();
// 删除
session.Delete(productById);
transaction.Commit();
}
LLBLGen Pro
实体类
LLBLGen Pro 会根据数据库表自动生成实体类,或者你可以自定义实体类。
数据访问代码
using LLBLGen.Pro.Data.Common;
using LLBLGen.Pro.ORMSampleEntities;
var adapter = new DataAccessAdapter();
// 创建
var product = new Product();
product.Name = "New Product";
product.Price = 9.99m;
product.CategoryId = 1;
adapter.SaveEntity(product, false);
// 读取
var productId = product.ProductId;
var readProduct = new Product();
readProduct.ProductId = productId;
adapter.FetchEntity(readProduct, false);
// 更新
readProduct.Name = "Updated Product";
readProduct.Price = 10.99m;
adapter.UpdateEntity(readProduct);
// 删除
adapter.DeleteEntity(readProduct);
每个框架都有其独特的特点和使用场景,选择合适的框架取决于项目的具体需求、开发团队的熟悉程度以及对性能的要求。
本文暂时没有评论,来添加一个吧(●'◡'●)