使用.NET Symbiotic Micro ORM进行数据库操作

在这篇文章中,将探讨如何使用.NETSymbiotic Micro ORM来与SQL Server数据库进行交互。Symbiotic是一个支持多种数据库供应商的.NET ORM,包括SQL Server、SQL Azure、MySQL、SQLite、Oracle、PostgreSQL、Firebird和DB2/LUW。本文将重点介绍SQL Server数据库,并假设已经具备了C#和SQL Server的基础知识。

准备工作

在开始之前,需要一个SQL Server数据库。它可以是一个本地数据库文件、服务器数据库或Azure SQL数据库。请确保项目构建为x64。可以在Visual Studio的菜单中找到:“构建 \ 配置管理器”。

步骤1:创建SimpleEntities表

运行以下SQL脚本以创建将在本文中使用的表。

CREATE TABLE [dbo].[SimpleEntities]( [EntityId] [int] IDENTITY(1,1) NOT NULL, [Description] [nvarchar](50) NOT NULL, CONSTRAINT [PK_SimpleEntities] PRIMARY KEY CLUSTERED ( [EntityId] ASC ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ) ON [PRIMARY]

步骤2:创建项目并添加Symbiotic ORM NuGet包

在Visual Studio中创建一个新的C#控制台项目,目标框架为.NET4.6.1或更高版本。然后添加NuGet包"Symbiotic_Micro_ORM_Net_Standard_x64"。可以通过主菜单:"项目 \ 管理Nuget包..."来添加。添加后可能需要在"解决方案资源管理器"中刷新项目以更新引用。

步骤3:添加SymbioticORM的引用

在"Program"类的顶部添加以下using语句:

using FrozenElephant.Symbiotic; using FrozenElephant.Symbiotic.DataProviderSqlServer;

步骤4:创建SimpleEntity类

向项目中添加一个名为"SimpleEntity"的新类。这个类将用于表示在步骤1中创建的表。请将"SimpleEntity"类的代码替换或修改为以下内容:

[Serializable, DatabaseTable("SimpleEntities"), DebuggerDisplay("SimpleEntity: EntityId= {EntityId}, Description= {Description}")] public class SimpleEntity { [DatabaseColumn("EntityId", IsPrimaryKey = true, IsIdentityColumn = true)] public int EntityId { get; set; } [DatabaseColumn("Description")] public string Description { get; set; } }

步骤5:初始化工厂类

在"Main"方法的开始处添加以下代码行。这些行初始化工厂类并设置数据库连接字符串。需要修改连接字符串以匹配数据库、服务器和用户/密码。

_DBTypesFactory = new DatabaseTypesFactorySqlServer(); _DBTypesFactory.ConnectionString = "Data Source=yourServer;Initial Catalog=yourDatabase;User ID=yourUserID;Password=yourPassword;Connect Timeout=35;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;MultipleActiveResultSets=true;Enlist=false";

步骤6:创建记录

在"Main"方法的末尾添加以下代码行。前两行创建了"SimpleEntity"类的新实例并填充了描述。第三行创建了一个名为"writer"的IObjectWriter实例,它将用于将项目写入数据库。最后一行将"SimpleEntity"中的数据写入数据库。

SimpleEntity newItem = new SimpleEntity(); newItem.Description = "Description " + DateTime.Now.ToString(); IObjectWriter writer = _DBTypesFactory.CreateObjectWriter(); writer.Create(newItem);

步骤7:读取记录

在"Main"方法的末尾添加以下代码行。第一行创建了一个名为"loader"的IObjectLoader实例,它将用于从数据库中读取项目。最后一行使用loader从数据库中检索记录,作为一个填充了的"SimpleEntity"实例存储在loadedItem变量中。

IObjectLoader loader = _DBTypesFactory.CreateObjectLoader(); SimpleEntity loadedItem = loader.ObtainItem(newItem.EntityId);

步骤8:更新记录

在"Main"方法的末尾添加以下代码行。前两行修改了名为"newItem"的SimpleEntity实例的Description。最后一行将"newItem"实例的新数据写入数据库:

string newDesc = "Updated " + DateTime.Now.ToString(); newItem.Description = newDesc; writer.Update(newItem);

步骤9:插入或更新记录

在"Main"方法的末尾添加以下代码行。前两行修改了名为"newItem"的SimpleEntity实例的Description。最后一行将根据记录是否存在来插入或更新"newItem"实例的记录。

string newDesc2 = "Updated " + DateTime.Now.ToString(); newItem.Description = newDesc2; writer.InsertUpdate(newItem);

步骤10:删除记录

在"Main"方法的末尾添加以下代码行。这行代码将从数据库中删除"newItem"实例:

writer.Delete(newItem);

步骤11:查询多条记录

第一行是一个标准的SQL,用于返回"SimpleEntities"表中的所有记录。第二行创建了一个ISqlQuery实例,用于运行查询。第三行运行查询并返回一个SimpleEntity项目的集合。请注意,如果没有记录,集合将为空。

string sql = "Select * from simpleEntities"; ISqlQuery query = _DBTypesFactory.CreateSqlQuery(sql, "My simple sql"); IList items = loader.ObtainItems(query);

步骤12:带参数的查询

第一行创建了一个带有名为"max"的参数的参数化SQL语句。第二行创建了一个ISqlQuery实例,用于运行查询。第三行创建了一个参数,并将参数加载到查询中,值为"3"。第四行运行查询并返回一个SimpleEntity项目的集合。请注意,如果没有记录匹配查询的where子句,那么集合将为空。

string sql2 = "Select * from simpleEntities where EntityId > @max"; ISqlQuery query2 = _DBTypesFactory.CreateSqlQuery(sql2, "My simple sql"); query2.CreateAndAddParameter(_DBTypesFactory, DbType.Int32, "max", 3); IList items2 = loader.ObtainItems(query2);

本文仅触及了"Symbiotic"ORM功能的表面。有关更高级功能的细节和示例,请下载NuGet包,并查看包文件夹中的示例项目。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485