mausch/FsSql

Feature Request: let FsSql know schema

Opened this issue · 0 comments

haf commented

As a user,
Doing joins,
I may not want to duplicate all DTOs,
But if I don't, I get these exceptions:

Exception: Mono.Data.Sqlite.SqliteException: SQLite error
no such column: r.images
  at Mono.Data.Sqlite.SQLite3.Prepare (Mono.Data.Sqlite.SqliteConnection cnn, System.String strSql, Mono.Data.Sqlite.SqliteStatement previous, UInt32 timeoutMS, System.String& strRemain) [0x0022a] in /private/tmp/source-mono-mac-3.12.0-branch-32/bockbuild-mono-3.12.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.12.0/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLite3.cs:343 
  at Mono.Data.Sqlite.SqliteCommand.BuildNextCommand () [0x00019] in /private/tmp/source-mono-mac-3.12.0-branch-32/bockbuild-mono-3.12.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.12.0/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteCommand.cs:230  (00:00:00.1324668)

When r.images is the field that is a 'string list' that I want to join another table into.

The code looks like: select %s, i.path from my_table t join images i on t.id = i.t_id with a Sql.recordFieldsAlias typeof<MyTable> "t")

But MyTable contains a property images which in this case results from the i.path field.

If FsSql kept track on the schemas for the tageted table MyTable, then it would know to exclude images from the list of 'record field aliases'.

Or perhaps I could just give it an 'exclude' list?

Otherwise, do you create duplicate DTOs for just mapping and then mapping code from your 'internal' DTOs to you 'external' DTOs? It seems like such a waste to write all that extra code.