IUpdatable<T> 和 IValueInsertable<T> 来自可选值?

IUpdatable<T> and IValueInsertable<T> from optional values?

是否可以在 Linq2DB 中构建类似的东西?目前我遇到的问题是 ITable<T> 无法分配给 IUpdatable<T>IValueInsertable<T>。或者也许我想要实现的不是一个好的做法?

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();

您可以使用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();