1

Is it possible to build something like this in Linq2DB? Currently I have a problem that ITable<T> is not assignable to either IUpdatable<T> or IValueInsertable<T>. Or maybe what I'm trying to achieve is not a good practice?

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

The same applies for 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();
mihails.kuzmins
  • 1,140
  • 1
  • 11
  • 19

1 Answers1

2

You can use 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();
Svyatoslav Danyliv
  • 21,911
  • 3
  • 16
  • 32