DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping
https://www.donet5.com/Home/Doc
MIT License
5.31k stars 1.33k forks source link

enum如果資料庫格式為字串,但不是枚舉名字本身 #1256

Closed flier268 closed 3 months ago

flier268 commented 3 months ago

如果我資料儲存"0" "1"(資料庫格式為字串),而不是enum的名字,實體使用enum,要怎麼用

public enum Status
{
    /// <summary>
    /// 未編輯(on server: 已退回)
    /// </summary>
    [EnumMember(Value = "0")]
    NotEdited = 0,

    /// <summary>
    /// 編輯中
    /// </summary>
    [EnumMember(Value = "1")]
    Editing = 1,

    /// <summary>
    /// 待上傳(on server: 待核准)
    /// </summary>
    [EnumMember(Value = "2")]
    WaitForUpload = 2,
}

public Status Status { get; set; }

DotNetNext commented 3 months ago

https://www.donet5.com/Home/Doc?typeId=2415 看标题4 ,你可能通过反射拿备注

DotNetNext commented 3 months ago

能看懂吗,不能看懂我在写个DEMO

flier268 commented 3 months ago

可以看懂,但這樣寫調用很麻煩,而且我想要用AOT,如果要用BulkMergeAsync就不能這樣用了吧? 更傾向於如果有EnumMember就用他的Value,EF Core也是這樣用的

DotNetNext commented 3 months ago

没听懂你说的,BulkMergeAsync 是更新 。和备注有什么关系

DotNetNext commented 3 months ago

public Status Status { get; set; }

这个插入的就是 1 查询直接能查

DotNetNext commented 3 months ago

不是很理解你这样的意义 [EnumMember(Value = "0")] NotEdited = 0, 这2值不一样的吗

DotNetNext commented 3 months ago

sqlsugar插入 默认插入的是 value不是name

DotNetNext commented 3 months ago

image 我AOT测试了数据库都是INT 不是字符串

flier268 commented 3 months ago

因為資料庫欄位是字串,但是存數字的字串形式,不要問我為什麼這樣設計,我也不明白 enum是數值,不是字串

DotNetNext commented 3 months ago

现在就是存的数字 ,默认sqlsugar插入枚举存在库就是数字

DotNetNext commented 3 months ago

没听懂你需求

DotNetNext commented 3 months ago

    [EnumMember(Value = "0")]
    NotEdited = 0

这个默认存到库是0,你想要结果是什么? 如果是0那就是符合你要求 还是说只是BulkMerge这个函数 有问题

flier268 commented 3 months ago

我想要存"0",不是0 vchar

DotNetNext commented 3 months ago

我想要存"0",不是0 vchar 这2个值不一样的吗,你数据库是字符串,存到库就”0“

DotNetNext commented 3 months ago

主要看表的类型

DotNetNext commented 3 months ago

image 我测试varchar也能插入进去

flier268 commented 3 months ago

如果要改存a是不是就不行了

DotNetNext commented 3 months ago

如果要改存a是不是就不行了

问题是你的需求真的要用到A吗 ? 你上面的代码都一样的

DotNetNext commented 3 months ago

如果真用到可以用自定义类型实现 https://www.donet5.com/Home/Doc?typeId=2542