Hi.Ltd.SqlServer
2025.4.21.1155
dotnet add package Hi.Ltd.SqlServer --version 2025.4.21.1155
NuGet\Install-Package Hi.Ltd.SqlServer -Version 2025.4.21.1155
<PackageReference Include="Hi.Ltd.SqlServer" Version="2025.4.21.1155" />
<PackageVersion Include="Hi.Ltd.SqlServer" Version="2025.4.21.1155" />
<PackageReference Include="Hi.Ltd.SqlServer" />
paket add Hi.Ltd.SqlServer --version 2025.4.21.1155
#r "nuget: Hi.Ltd.SqlServer, 2025.4.21.1155"
#addin nuget:?package=Hi.Ltd.SqlServer&version=2025.4.21.1155
#tool nuget:?package=Hi.Ltd.SqlServer&version=2025.4.21.1155
Hi.Ltd.SqlServer
此类主要与 SQL SERVER数据库进行增删改查方法实现
以下是在C# 中创建表时用到的属性对应到数据库中数据表的结构
自定义候选属性
KeyAtrribute
KeyAtrribute 表示一张表里的主键,此列设置了 [Key] 则默认选择了 [Identity]自增选项 以及 [Reuired] 不可空
[Key]
public int Id{get;set;}
DataBaseAttribute
DataBaseAttribute 表示一张表所在的数据库名称
[DataBase("Hi.Ltd")]
public class Table
{
}
TableAttribute
TableAttribute 表示一张表名称,如有另设表框架,则需要设置Schema,表框架默认为"dbo"
[Table("Hi.Ltd")] //未指定Schema时,默认数据库框架 dbo
public class Table
{
}
[Table("Hi.Ltd",Schema="hi")] //指定Schema时,则按指定的Schema在数据库中建表
public class Table
{
}
DatabaseGeneratedAttribute
DatabaseGeneratedAttribute 用于指定主键是否为自增列,如果当前主键未设置则默认为(Data.DatabaseGeneratedOption.Identity)自增列,如果不想设置自增,则需要手动设置
[Key,DatabaseGenerated(Data.DatabaseGeneratedOption.None)]
public int Id{get;set;} //此属性一定是与key 成对出现
[Key,DatabaseGenerated(Data.DatabaseGeneratedOption.Identity)]
public int Id{get;set;} //此设定与 DatabaseGeneratedAttribute未指定时效果一样
MaxLengthAttribute
MaxLengthAttribute 用于指定字符串在长度,如无指定,则默认字符串的长度为50,如果存储到数据库的字段实际长度超过50,则必须指定
[MaxLength(450)]
public string Content{get;set;} //此字段最大长度为450,以Unicode字符形式
public string Note{get;set;} // 此字段最大长度为50,以Unicode字符形式 ,超出或报异常,或截断字符
RequiredAttribute
RequiredAttribute 用于指定当前字段存往数据库中是否可以为空值,如无指定则默认是可以为空值,如指定,则此字段必须不能为空
[Required,MaxLength(450)]
public string Content{get;set;} //此字段不能为空
[MaxLength(450)]
public string Note{get;set;} //此字段可以为空
ForeignKeyAttribute
ForeignKeyAttribute 用于指定从表与主表的关联信息,以及在主表操作删除或更新时,对从表的影响
[Table("Master",Schema="dbo")]
public class MasterTable //主表
{
[Key, DisplayName("编号")]
public int Id { get; set; }
[DisplayName("日期"), Required]
public DateTime DateTime { get; set; }
[DisplayName("名称"), MaxLength(100)]
public string Name { get; set; }
[DisplayName("内容"), MaxLength(450)]
public string Content { get; set; }
}
[Table("Slave",Schema="dbo")]
public class SlaveTable //从表
{
[Key, DisplayName("编号")]
public int Id { get; set; }
[ForeignKey(typeof(MasterTable))]
public int MasterId { get; set; } //将MasterId与 Master表里的 Id进行映射绑定,此MasterId里的值必须是Master表里的 Id中有的,可以为空值
[DisplayName("日期"), Required]
public DateTime DateTime { get; set; }
[DisplayName("名称"), MaxLength(100)]
public string Name { get; set; }
[DisplayName("内容"), MaxLength(450)]
public string Content { get; set; }
}
[Table("Slave",Schema="dbo")]
public class SlaveTable //从表
{
[Key, DisplayName("编号")]
public int Id { get; set; }
[ForeignKey(typeof(MasterTable),Option = TableDeleteOrUpdateOption.Cascade)]
public int MasterId { get; set; } //如果未指定Option的值,则默认为 TableDeleteOrUpdateOption.Restrict,即 如果从表中有匹配的记录,则不允许对主表对应候选键进行update/delete操作
[DisplayName("日期"), Required] //如果设置成TableDeleteOrUpdateOption.Cascade,即 主表上update/delete记录时,同步update/delete从表的匹配记录
public DateTime DateTime { get; set; } //如果设置成TableDeleteOrUpdateOption.Null,即 在主表上update/delete记录时,将从表上匹配记录的列设为null
[DisplayName("名称"), MaxLength(100)]
public string Name { get; set; }
[DisplayName("内容"), MaxLength(450)]
public string Content { get; set; }
}
DigitAttribute
DigitAttribute 用于指定数据类型为Decimal的字段,设置数据的长度以及保留的小数位数
[Digit(10,2)]
public decimal PressDecimal{get;set;} //如未指定,则默认为 Digit(18,0)
方法解释
以下是演示数据表示例
[Table("Navigation", Schema = "dbo"), DisplayName("导航表")]
public class NavigationTable
{
[Key, DisplayName("编号")]
public int Id { get; set; }
[DisplayName("日期")]
public DateTime DateTime { get; set; }
[MaxLength(450), DisplayName("内容")]
public string Content { get; set; }
[MaxLength(450), DisplayName("备注")]
public string Note { get; set; }
}
[Table("Login", Schema = "dbo"),DisplayName("登录表")]
public class Login : BaseTable
{
[Key, DisplayName("编号")]
public int Id { get; set; }
[Required, DisplayName("日期")]
public DateTime DateTime { get; set; }
[MaxLength(250),DisplayName("用户名")]
public string UserName { get; set; }
[MaxLength(250),DisplayName("密码")]
public string Password { get; set; }
[ForeignKey(typeof(NavigationTable)),DisplayName("导航编号")]
public int NavigationId { get; set; }
}
CreateDatabase
CreateDatabase 表示创建一个数据库,如果当前数据库不存在则创建,否则跳过
var sql = SqlEntities.Create; //创建操作句柄
sql.DataSource = "(local)"; //填写数据库服务器,当前设置为本地
sql.UserId = "sa"; //填写用户名,如 用户名与密码不填写,则默认为本地登录
sql.Password = "Demo123456"; //填写密码,
sql.Database = "Hi.Ltd"; //指定数据库名称,建议指定数据库名称,否则必须在每张表设定时指定数据库名称
sql.Timeout = 10; //设置连接超时时间(S),如不设定,则默认为15S
sql.Connection(); 测试连接到数据库,如果连接成功则返回 true, 否则 返回 false;
//创建数据库
sql.CreateDatabase(sql.Database); //如无指定路径,则默认存储到 "C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA" 文件夹下
//将创建的数据库存储在指定位置
sql.CreateDatabase(sql.Database,@"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA");
CreateTable
CreateTable 表示创建一个数据表,如果当前数据表在数据库中已经存在则跳过,否则创建一个新的数据表
sql.CreateTable<NavigationTable>(); //创建导航表
//在指定数据库中创建导航表
sql.CreateTable<NavigationTable>("Hi.Ltd"); //创建出来的表在数据库中显示为 [Hi.Ltd].[dbo].[Navigation] ,如果NavigationTable 表未指定Table属性,则在数据库中显示为[Hi.Ltd].[dbo].[NavigationTable]
//在指定数据库中使用新的名称来创建导航表
sql.CreateTable<NavigationTable>("Hi.Ltd","NewNavigation"); //创建出来的表在数据库中显示为 [Hi.Ltd].[dbo].[NewNavigation]
//在指定数据库中使用新的名称,新的架构来创建导航表
sql.CreateTable<NavigationTable>("Hi.Ltd","NewNavigation","hi"); //创建出来的表在数据库中显示为 [Hi.Ltd].[hi].[NewNavigation]
sql.CreateTable<Login>(); //创建登录表 ,其它方法使用同上
AlterTable
AlterTable 表示对表结构进行修改的相关操作,此操作具有一定的风险,只可在测试环境下使用,正式环境下不建议使用,此操作不可逆转,如删除无法找回
sql.AlterTable<NavigationTable>(); //此方法将与数据库中的 [Hi.Ltd].[dbo].[Navigation] 进行比对,如果有表成员名称不同,则会在此表中新增一列数据。
//如果名称相同,数据类型不同,则修改表对应成员的数据类型,
//在指定数据库中修改导航表
sql.AlterTable<NavigationTable>("Hi.Ltd");
sql.AlterTable<NavigationTable>("Hi.Ltd","NewNavigation");
sql.AlterTable<NavigationTable>("Hi.Ltd","NewNavigation","hi");
sql.RenameColumn<NavigationTable>("Hi.Ltd","NewNavigation","hi","Note","NewNote"); //将表中的列名[Note]变更 [NewNote] ;
sql.DropColumn<NavigationTable>("Hi.Ltd","Navigation","hi","Note"); //将表中的列名[Note]从表中移除,此操作必须慎重,如需要移除,请确保移除当前数据对程序或其它表没有任何影响;
sql.RenameTable<NavigationTable>("Navigation","NewNavigation"); //将表名称由[Navigation]变更为[NewNavigation]
BackupDatabase
BackupDatabase 对一个已经存在的数据库进行备份操作,如指定的数据不存在,则跳过
sql.BackupDatabase("Hi.Ltd"); //如不指定存储路径则默认存储在"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup"文件下,
//如无指定文件名称,以指定的数据库名称命令,例如 :Hi.Ltd.bak
sql.BackupDatabase("Hi.Ltd",@"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup");
sql.BackupDatabase("Hi.Ltd",@"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup","backup");
RestoreDatabase
RestoreDatabase 从指定的存储路径还原数据库
sql.RestoreDatabase("Hi.Ltd",@"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup","backup"); //如不指定存储路径则默认存储在"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup"文件下,
//TODO:其它方法待完善
InsertTable
InsertTable 将数据表里插入一行数据,或批量插入数据
//初始一条数据,由于Id在数据库中设置了自增,所以不需要设置,如没有设置自增则必须设置Id值
var content=new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表",
Note=string.Empty
};
//初始化多条数据
var content=new List<NavigationTable>()
{
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表1",
Note=string.Empty
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表2",
Note=string.Empty
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表3",
Note=string.Empty
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表4",
Note=string.Empty
}
};
sql.InsertTable(content); //将数据库中插入一条数据
//向指定数据库的数据表中插入一条数据
sql.InsertTable("Hi.Ltd",content);
//向指定数据库的指定数据表中插入一条数据
sql.InsertTable("Hi.Ltd","NewNavigation",content);
//向指定数据库的指定架构,指定数据表中插入一条数据
sql.InsertTable("Hi.Ltd","NewNavigation","hi",content);
sql.InsertTable(contents); //将数据库中插入4条数据 ,以下同上
UpdateTable
UpdateTable 将数据表里更新一行数据,或批量更新数据
//初始一条数据,由于更新数据必须指定唯一主键,否则将不能确定此条数据是更新到哪里
var content=new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表",
Note=string.Empty,
Id=1
};
//初始化多条数据
var content=new List<NavigationTable>()
{
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表1",
Note=string.Empty,
Id=2
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表2",
Note=string.Empty,
Id=3
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表3",
Note=string.Empty,
Id=4
},
new NavigationTable(){
DateTime=DateTime.Now,
Name="这是一个导航表4",
Note=string.Empty,
Id=5
}
};
sql.UpdateTable(content); //将数据库中更新一条数据
//向指定数据库的数据表中更新一条数据
sql.UpdateTable("Hi.Ltd",content);
//向指定数据库的指定数据表中更新一条数据
sql.UpdateTable("Hi.Ltd","NewNavigation",content);
//向指定数据库的指定架构,指定数据表中更新一条数据
sql.UpdateTable("Hi.Ltd","NewNavigation","hi",content);
sql.UpdateTable(contents); //将数据库中更新4条数据 ,以下同上
//TODO 按条件批量更新整个数据表 待实现中,由于此操作风险过大,不推荐使用
InqureTable
InqureTable 将根据条件查询数据
//默认查询最新的前1000条记录
sql.InqureTable<NavigationTable>();
//向指定数据库的数据表中更新一条数据
sql.InqureTable<NavigationTable>("Hi.Ltd");
//向指定数据库的指定数据表中更新一条数据
sql.InqureTable<NavigationTable>("Hi.Ltd","NewNavigation");
//向指定数据库的指定架构,指定数据表中更新一条数据
sql.InqureTable<NavigationTable>("Hi.Ltd","NewNavigation","hi");
//TODO 按条件查询正在实现中
DropTable
DropTable 从数据库中删除指定的表
//从数据库中删除表
sql.DropTable<NavigationTable>();
//向指定数据库删除表
sql.DropTable<NavigationTable>("Hi.Ltd");
//向指定数据库中删除指定数据表
sql.DropTable<NavigationTable>("Hi.Ltd","NewNavigation");
//向指定数据库中删除指定架构的指定数据表
sql.DropTable<NavigationTable>("Hi.Ltd","NewNavigation","hi");
DeleteTable
DeleteTable 从数据表中删除指定的内容
//TODO 按条件删除正在实现中
以上是已经完成并且测试OK的功能,待实现的功能有数据表内容按条件删除,多表联查,多表联改,多表联删等
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net45 is compatible. net451 was computed. net452 was computed. net46 is compatible. net461 is compatible. net462 was computed. net463 was computed. net47 is compatible. net471 is compatible. net472 was computed. net48 is compatible. net481 is compatible. |
-
.NETFramework 4.5
- Hi.Ltd (>= 2025.4.10.1124)
-
.NETFramework 4.6
- Hi.Ltd (>= 2025.4.10.1124)
- Microsoft.SqlServer.Server (>= 1.0.0)
-
.NETFramework 4.6.1
- Hi.Ltd (>= 2025.4.10.1124)
- Microsoft.SqlServer.Server (>= 1.0.0)
-
.NETFramework 4.7
- Hi.Ltd (>= 2025.4.10.1124)
- Microsoft.SqlServer.Server (>= 1.0.0)
-
.NETFramework 4.7.1
- Hi.Ltd (>= 2025.4.10.1124)
- Microsoft.SqlServer.Server (>= 1.0.0)
-
.NETFramework 4.8
- Hi.Ltd (>= 2025.4.10.1124)
-
.NETFramework 4.8.1
- Hi.Ltd (>= 2025.4.10.1124)
- Microsoft.SqlServer.Server (>= 1.0.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 |
---|---|---|
2025.4.21.1155 | 178 | 4/21/2025 |
2025.3.26.1023 | 471 | 3/26/2025 |
2025.3.21.1343 | 130 | 3/21/2025 |
2025.3.21.1209 | 137 | 3/21/2025 |
2025.2.18.1702 | 103 | 2/26/2025 |
2024.8.8.1134 | 130 | 8/8/2024 |
2024.8.6.1558 | 94 | 8/6/2024 |
2024.8.5.1700 | 71 | 8/5/2024 |
2024.4.8.1539 | 147 | 4/8/2024 |
2024.4.8.1521 | 122 | 4/8/2024 |
2024.4.7.1518 | 152 | 4/7/2024 |
修复更新操作的BUG,在操作表的同时必须创建表类型