【问题标题】:IUpdatable<T> and IValueInsertable<T> from optional values?IUpdatable<T> 和 IValueInsertable<T> 来自可选值?
【发布时间】:2021-12-21 06:01:09
【问题描述】:

是否可以在 Linq2DB 中构建类似的东西?目前我有一个问题,ITable&lt;T&gt; 不能分配给IUpdatable&lt;T&gt;IValueInsertable&lt;T&gt;。或者也许我想要实现的不是一个好习惯?

var optional1 = Optional<int>.None();
var optional2 = Optional<int>.Of(123);

var table = Database.MyTable; // ITable<MyRecord>
if (optional1.HasValue) table = table.Set(x => x.Optional1, optional1.Value);
if (optional2.HasValue) table = table.Set(x => x.Optional2, optional2.Value);

await table.UpdateAsync();

同样适用于IValueInsertable

var optional1 = Optional<int>.None();
var optional2 = Optional<int>.Of(123);

var table = Database.MyTable; // ITable<MyRecord>
if (optional1.HasValue) table = table.Value(x => x.Optional1, optional1.Value);
if (optional2.HasValue) table = table.Value(x => x.Optional2, optional2.Value);

await table.InsertAsync();

【问题讨论】:

    标签: linq2db


    【解决方案1】:

    你可以使用AsUpdatable()

    var updatable = Database.MyTable.AsUpdatable(); 
    
    if (optional1.HasValue) updatable = updatable.Set(x => x.Optional1, optional1.Value);
    if (optional2.HasValue) updatable = updatable.Set(x => x.Optional2, optional2.Value);
    
    await updatable.UpdateAsync();
    

    【讨论】:

    • 太好了,谢谢。应该更多地使用智能感知。但是 IValueInsertable 呢?没有AsValueInsertable这样的方法吗?
    • AsValueInsertablegithub.com/linq2db/linq2db/pull/3331的PR
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2023-04-09
    相关资源
    最近更新 更多