Dapper扩展的主键自增与非自增

环境:

  • window10 x64
  • vs2022 企业版 17.0.0
  • .NET 6.0
  • Dapper 2.0.78
  • Dapper.Contrib 2.0.78

一、TableAttribute 特性

  这个先对简单,就是对模型进行定义表名,如果你未标注表名特性,默认去模型类型名称,并且此特性只能标注在类上,不能标注在属性,方法等其它作用体上。

二、KeyAttribute [隐式]主键特性

  为什么我把它定义隐式呢,关键在于在Insert时,如果你用它标记了一个属性,那这个属性的值无法对应插入到数据表里,比较适合自增类型主键和数据库默认有赋值的主键字段。

[Table("User")]
public class User
{
    [Key]
    public Guid ID { get; set; }
    public string Name { get; set; }
    public byte Age { get; set; }
}
//最终的脚本是:INSERT INTO [User] (Name,Age) VALUES (@Name,@Age)

三、ExplicitKeyAttribute [显式]主键特性

  我之前也比较纳闷怎么需要定义两种KEY特性,在尝试DEMO后,就发现这个是可以作用在Insert上进行主键值插入。

[Table("User")]
public class User
{
    [ExplicitKey]
    public Guid ID { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}
//最终的脚本是:INSERT INTO [User] (ID,Name,Age) VALUES (@ID,@Name,@Age)

四、WriteAttribute 可写特性

  最简单的理解,如果在属性上这么标注:Write(false),表明不可写入,包括:Insert和Update,这个我就不贴代码了,很好理解。

五、ComputedAttribute 已计算过特性

  单词理解上我觉得就是表明这个属性值是自己计算,不参与任何Insert和Update,但可从数据表读取数据,所以如果在属性上标记这个将无法进行写入和更新值以上的扩展特性在项目:Dapper.Contrib上,大家在使用的的时候注意引用,此项目也是写Dapper的开发者编写的,请配合扩展方法:Get<T>,GetAll<T>,Insert<T>,Update<T>,Delete<T>,DeleteAll<T>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值