dapper.contrib 是不是支持 varchar 类型的主键?

Posted

技术标签:

【中文标题】dapper.contrib 是不是支持 varchar 类型的主键?【英文标题】:Does dapper.contrib support primary key in varchar type?dapper.contrib 是否支持 varchar 类型的主键? 【发布时间】:2015-08-17 09:38:29 【问题描述】:

我是 Dapper 的新手,正在尝试编写一些代码来测试 Dapper.Contrib。

[Dapper.Contrib.Extensions.Table("Cat")]
public class Cat

    [Dapper.Contrib.Extensions.Key]
    public string catid get;set;
    public string catName get;set;

...
Cat cat = new Cat()catid="somecharmaybe", catName="testcat"
conn.Insert(cat);

当我运行应用程序时,抛出以下异常

不能在主键catid中插入空值

谁能给我一些建议?

【问题讨论】:

你可能想看看这个扩展:github.com/tmsmith/Dapper-Extensions 【参考方案1】:

不能在主键catid中插入空值

错误说你不能在 catid 上插入空值,因为 dapper 明白这是由数据库生成的身份密钥来解决这个使用 DapperExtension

public class Cat

    public string catid get;set;
    public string catName get;set;


public class CatMap : ClassMapper<Cat>

   public CatMap()
   
       Table("Cat")
       Map(s=>s.CatId).Key(KeyType.Assigned);
       AutoMap();
    

希望对你有帮助,如果有人有更好的解决方案,请在此处发布,谢谢。

【讨论】:

以上是关于dapper.contrib 是不是支持 varchar 类型的主键?的主要内容,如果未能解决你的问题,请参考以下文章

Dapper.Contrib - 如何获取更改跟踪值?

Dapper.Contrib 开发.net core程序,兼容多种数据库

Dapper SqlMapperExtensions / Dapper.Contrib?

Dapper.Contrib.Extensions问题

Dapper的新实践,Dapper.Contrib的使用与扩展

在 Id 上具有 ExplicitKey 属性的类上使用 Dapper.Contrib InsertAsync 返回 0 作为 Id