JCoder.Db4Net.ORM
2.21.2211.2117
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package JCoder.Db4Net.ORM --version 2.21.2211.2117
NuGet\Install-Package JCoder.Db4Net.ORM -Version 2.21.2211.2117
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JCoder.Db4Net.ORM" Version="2.21.2211.2117" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add JCoder.Db4Net.ORM --version 2.21.2211.2117
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: JCoder.Db4Net.ORM, 2.21.2211.2117"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install JCoder.Db4Net.ORM as a Cake Addin
#addin nuget:?package=JCoder.Db4Net.ORM&version=2.21.2211.2117
// Install JCoder.Db4Net.ORM as a Cake Tool
#tool nuget:?package=JCoder.Db4Net.ORM&version=2.21.2211.2117
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
JCoder.Db4Net.ORM
属性 | |
---|---|
作者(Authors) | Jackie Law |
版权(Copyright) | Copyright © Jackie Law. All rights reserved. |
协议 | MIT |
联系(QQ) | 1378071853 |
联系(Wechat) | JackieLaw1024 |
联系(Email) | JackieLaw-dev@outlook.com |
[TOC]
架构说明
JCoder.Db4Net.ORM | |
---|---|
语言 | C# |
协议 | MIT |
.Net框架 | .Net Standard2.1; .Net Framework 4.7.2; .Net 5; .Net 6; |
简述 | Database类库,一个基于JCoder.Db4Net的ORM库。 |
引用类库
引用类库 | 版本 |
---|---|
JCoder.Db4Net | >=2.21.4 |
相关类库
相关类库 | 说明 |
---|---|
JCoder.Db4Net | 一款为方便使用数据库的操作类库。 |
JCoder.Db4Net.ORM | 一个基于JCoder.Db4Net的ORM库。 |
JCoder.Db4Net.Sqlite | 一个基于JCoder.Db4Net且支持Sqlite的库。 |
JCoder.Db4Net.MySql | 一个基于JCoder.Db4Net且支持Mysql的库。 |
JCoder.Db4Net.SqlServer | 一个基于JCoder.Db4Net且支持SqlServer的库 。 |
JCoder.Mock4Net | 一款简易版的用于模拟数据的功能库。 |
JCore.Log4Net | 一款用于日志的类库。 |
获取方式
- 版本要求:>=2.21.4
- 以版本2.21.4为例
获取方式 | 描述 |
---|---|
Package Manager | Install-Package JCoder.Db4Net.ORM -Version 2.21.4 |
.Net CLI | dotnet add package JCoder.Db4Net.ORM --version 2.21.4 |
PackageReference | <PackageReference Include="JCoder.Db4Net.ORM" Version="2.21.4" /> |
Paket CLI | paket add JCoder.Db4Net.ORM --version 2.21.4 |
Script&Interactive | #r "nuget: JCoder.Db4Net.ORM, 2.21.4" |
Cake | // Install as a Cake Addin<br/>#addin nuget:?package=JCoder.Db4Net.ORM&version=2.21.4<br/><br/>// Install as a Cake Tool<br/>#tool nuget:?package=JCoder.Db4Net.ORM&version=2.21.4 |
使用说明
主要类与接口
名称 | 类型 | 描述 |
---|---|---|
Orm | 类 | 工具类,主要用于数据库在数据对象上的通用处理。 |
函数名称说明
注意事项 | 描述 |
---|---|
函数名称有Entity | 属性数据处理以DbAttribute优先。 |
函数名称有Object | 属性数据有多种处理方式。<br/>OnlyProperty方式直接忽略DbAttribute。<br/>OnlyDbAttribute方式只处理有DbAttribute的。<br/>DbAttributeFirst方式以DbAttribute优先。 |
特性说明
Attribute类 | 应用位置 | 描述 |
---|---|---|
DbDatabaseAttribute | Class、Struct | 数据库的相关信息,可用于通过Entity进行CRUD。 |
DbTableAttribute | Class、Struct | 数据库的数据表信息,可用于通过Entity进行CRUD。 |
DbViewAttribute | Class、Struct | 数据库的视图信息,可用于通过Entity进行查询等操作。 |
DbRefTableAttribute | Property | (未完成)关联的数据表信息,可用于通过Entity获取关联的副表数据。 |
DbFieldAttribute | Property | 数据列信息,可用于通过Entity进行CRUD。 |
DbFieldExtendAttribute | Property | 数据列的扩展信息。 |
DbFieldPropertyAttribute | Property | 数据列的属性信息。 |
DbNumberExtAttribute | Property | 数字型数据列的扩展信息。 |
DbStringExtAttribute | Property | 文本型数据列的扩展信息。 |
DbTimeExtAttribute | Property | 时间型数据列的扩展信息。 |
DbAllowNullAttribute | Property | 数据列是否允许为Null值。 |
DbAutoIncrementAttribute | Property | 数据列是否自动增长。 |
DbPrimaryKeyAttribute | Property | 数据列是否为主键数据列。 |
DbForeignKeyAttribute | Property | 数据列是否为外键数据列。 |
DbGuidAttribute | Property | (未完成)数据列是否为GUID数据列。 |
DbIndexAttribute | Property | 数据表的索引列信息。 |
DbIndexFieldPropertyAttribute | Property | 数据表的索引列的扩展属性信息。 |
DbIgnoreAttribute | Property | 进行与数据库相关的处理时,将忽略标记的字段与属性。 |
DbIgnoreInsertAttribute | Property | 进行Insert处理时,将忽略标记的字段与属性。 |
DbIgnoreUpdateAttribute | Property | 进行Update处理时,将忽略标记的字段与属性。 |
DbEnumNameAttribute | Property | Entity数据转换为DataTable时,将枚举字段、属性转换为枚举名称的数据列。 |
DbFieldRouteAttribute | Property | Entity数据转换为DataTable时,根据路径获取标记属性对象中的实例值。 |
DbIgnoreConvertionAttribute | Property | Entity数据转换为DataTable时,将忽略标记的字段与属性。 |
DbJsonAttribute | Property | (未完成)Entity数据转换为DataTable时,将字段、属性转换为Json格式的数据列。 |
DbNameAttribute | Class、Struct、Property | 名称信息。可应用于以下情况,1.定义DataTable的数据列名称;2.定义DataTable的Table名称; |
DbSortAttribute | Property | 排序信息。可用于Entity转换为DataTable时的DataColumn顺序。 |
扩展使用
ToEntity1st(查询数据,并将首条数据转换为数据实例)
// ToEntity1st(查询数据,并将首条数据转换为数据实例) using JCoder.Db4Net; using JCoder.Db4Net.ORM; IDbOperator _operator = new MsSqlFactoryOperator() { ConnectionString = "Server=127.0.0.1;Database=test;Uid = user; Pwd=testpassword;" }; return this.Operator.ToEntity1st<T>("select top 1 * from table1;");
ToEntities(查询数据,并转换为数据实体列表)
// ToEntities(查询数据,并转换为数据实体列表) using JCoder.Db4Net; using JCoder.Db4Net.ORM; IDbOperator _operator = new MsSqlFactoryOperator() { ConnectionString = "Server=127.0.0.1;Database=test;Uid = user; Pwd=testpassword;" }; return this.Operator.ToEntities<T>("select top 10 * from table1;");
CRUD(增删查改)
using JCoder.Db4Net; using JCoder.Db4Net.ORM; // Test Entity Class [DbTable("t_table_test")] public class TestEntity { [DbPrimaryKey] [DbAutoIncrement] public int Key001 { get; set; } [DbPrimaryKey] [DbField(IsUnique=true)] public string Key002 { get; set; } [DbIndex("idx01")] public string C003 { get; set; } } IDbOperator _operator = new MsSqlFactoryOperator() { ConnectionString = "Server=127.0.0.1;Database=test;Uid = user; Pwd=testpassword;" }; TestEntity x = new TestEntity() { Key001 = 101, Key002 = "Test PK", }; // Insert Data(新增数据) this.Operator.Insert<TestEntity>(x); // Update Data(更新数据) x.C003 = "Update Test"; this.Operator.Update<TestEntity>(x); // Delete Data(删除数据) this.Operator.Delete<TestEntity>(x); // Select Data(查询数据) this.Operator.Select1st<TEntity>(" and Key001=101 and Key002-'Test PK'");
Create\Drop Table From Entity(由实体类创建\删除数据库的数据表)
using JCoder.Db4Net; using JCoder.Db4Net.ORM; // Test Entity Class [DbTable("t_table_test")] public class TestEntity { [DbPrimaryKey] [DbAutoIncrement] public int Key001 { get; set; } [DbPrimaryKey] [DbField(IsUnique =true)] public string Key002 { get; set; } [DbIgnore] public string Key003 { get; set; } [DbIndex] [DbField(AllowNull = false, Default = "", Description = "Test Comment")] public string C001 { get; set; } [DbIndex("idx01")] public string C002 { get; set; } [DbIndex("idx01")] public string C003 { get; set; } [DbIgnore] public int C004 { get; set; } [DbField(AllowNull = false, Default = "0", Description = "Test Comment2")] public int C005 { get; set; } [DbNumberFieldExt(Precision = 11, Scale = 2)] public double C006 { get; set; } [DbField(AllowNull = false, Default = "", Description = "Test Comment2")] public string C007 { get; set; } public string C008 { get; set; } [DbTimeFieldExt(UpdateTimeOnCreate = true, UpdateTimeOnUpdate = true)] public DateTime C009 { get; set; } } IDbOperator _operator = new MsSqlFactoryOperator() { ConnectionString = "Server=127.0.0.1;Database=test;Uid = user; Pwd=testpassword;" }; this.Operator.CreateTable<TestEntity>(); this.Operator.DropTable<TestEntity>();
Orm工具类使用
转换首条数据为实体对象(支持DbDataReader、DataTable)
var _table = new DataTable(); // ToEntity1st JCoder.Db4Net.ORM.Orm.ToEntity1st<T>(_table); // ToObject1st JCoder.Db4Net.ORM.Orm.ToObject1st<T>(_table); JCoder.Db4Net.ORM.Orm.ToObject1st<T>(_table, OrmMappingMode.OnlyProperty); JCoder.Db4Net.ORM.Orm.ToObject1st<T>(_table, OrmMappingMode.OnlyDbAttribute); JCoder.Db4Net.ORM.Orm.ToObject1st<T>(_table, OrmMappingMode.DbAttributeFirst);
将数据转换为实体对象(支持DataRow、IDictionary<string, string>、IDictionary<string, object>))
var _dict = new Dictionary<string, string>(); // ToEntity JCoder.Db4Net.ORM.Orm.ToEntity<T>(_dict); // ToObject JCoder.Db4Net.ORM.Orm.ToObject<T>(_dict); JCoder.Db4Net.ORM.Orm.ToObject<T>(_dict, OrmMappingMode.OnlyProperty); JCoder.Db4Net.ORM.Orm.ToObject<T>(_dict, OrmMappingMode.OnlyDbAttribute); JCoder.Db4Net.ORM.Orm.ToObject<T>(_dict, OrmMappingMode.DbAttributeFirst);
将数据源转换为实体对象列表(支持DbDataReader、DataTable)
var _table = new DataTable(); // ToEntities JCoder.Db4Net.ORM.Orm.ToEntities<T>(_table); // ToObjects JCoder.Db4Net.ORM.Orm.ToObjects<T>(_table); JCoder.Db4Net.ORM.Orm.ToObjects<T>(_table, OrmMappingMode.OnlyProperty); JCoder.Db4Net.ORM.Orm.ToObjects<T>(_table, OrmMappingMode.OnlyDbAttribute); JCoder.Db4Net.ORM.Orm.ToObjects<T>(_table, OrmMappingMode.DbAttributeFirst);
将数据填充到已有的实体对象里(支持DbDataReader、DataRow、IDictionary<string, string>、IDictionary<string, object>)
var _source = new DbDataReader(); var _target = new T(); JCoder.Db4Net.ORM.Orm.FillToObject<T>(_target, OrmMappingMode.OnlyProperty, _source); JCoder.Db4Net.ORM.Orm.FillToObject<T>(_target, OrmMappingMode.OnlyDbAttribute, _source); JCoder.Db4Net.ORM.Orm.FillToObject<T>(_target, OrmMappingMode.DbAttributeFirst, _source);
将实体对象转换为DataTable
// 实体对象转换为DataTable DataTable _table = JCoder.Db4Net.ORM.Orm.EntityToDataTable(new T()); DataTable _table = JCoder.Db4Net.ORM.Orm.ObjectToDataTable(new T()); // 实体对象列表转换为DataTable DataTable _table = JCoder.Db4Net.ORM.Orm.EntitiesToDataTable(new List<T>()); DataTable _table = JCoder.Db4Net.ORM.Orm.ObjectsToDataTable(new List<T>());
将List转换为DataTable
// 将List转换为DataTable(使用特性进行排序,自定义名称等) public class BoTest { [DbSubField("Width", "S001-Width", Sort = 2120)]//获取Size对象里的Width属性值,并显示为"S001-Width" [DbSubField("Height", "S001-Height", Sort = 2121)]//获取Size对象里的Height属性值,并显示为"S001-Height" public Size S001 { get; set; } public string Key { get; set; } [DbEnumName]//枚举显示为文本 public AttributeTargets AT { get; set; } public AttributeTargets AT2 { get; set; } [DbSort(100)] public string P100 { get; set; } [DbSort(111)]//设置排序值(从小到大依次排序) public string P111 { get; set; } public DateTime CreateTime { get; set; } [DbIgnoreConvertion]//转换时忽略 public int Z001 { get; set; } } var _list = new List<BoTest>(); for (int i = 0; i < 100; i++) { _list.Add(new() { S001 = new(i * 100, i * 1000), Key = $"Key_{i}", P100 = $"P100_{i}", P111 = $"P111_{i}", CreateTime = DateTime.Now, Z001 = i, AT = AttributeTargets.Interface, AT2 = AttributeTargets.Delegate, }); } var _table = JCoder.Db4Net.ORM.Orm.EntitiesToDataTable(_list);
将实体对象转换为Dictionary<string,string>
// 实体对象转换为Dictionary<string,string> Dictionary<string, string> _dict = JCoder.Db4Net.ORM.Orm.EntityToDict(new T()); Dictionary<string, string> _dict = JCoder.Db4Net.ORM.Orm.ObjectToDict(new T());
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net472 is compatible. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.7.2
- JCoder.Db4Net (>= 2.21.0)
-
.NETStandard 2.1
- JCoder.Db4Net (>= 2.21.0)
-
net5.0
- JCoder.Db4Net (>= 2.21.0)
-
net6.0
- JCoder.Db4Net (>= 2.21.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.26.2308.1417 | 176 | 8/14/2023 |
2.21.2211.2117 | 294 | 11/21/2022 |
2.20.12 | 361 | 11/4/2022 |
2.19.5 | 395 | 10/14/2022 |
2.18.6 | 409 | 10/13/2022 |
2.13.3 | 419 | 6/5/2022 |
2.12.3 | 432 | 5/25/2022 |
2.11.4 | 422 | 5/13/2022 |
Please contact Jackie by QQ 1378071853 or E-mail JackieLaw-dev@outlook.com;