[Mono-list] SqlMetal custom DataContext name
jonpryor at vt.edu
Tue Dec 7 11:33:59 EST 2010
On Dec 7, 2010, at 6:00 AM, Daniel Hughes wrote:
> By default the generated DataContext class name is Main.
> This causes problems for obvious reasons (really, I couldn't think of
> a default more likely to conflict)
What obvious reasons? Type names don't conflict with method names (unless the method is in the same type, and I doubt you're going to make the Main type your program entrypoint).
That said, the '-d DATABASE' option is also used to generate the DataContext type. For example, if importing a SQLite database:
sqlmetal -d MyDb -provider:Sqlite /c "Data Source=foo.db3" /code:Foo.cs
The DataContext subclass is named 'MyDb' instead of the type 'Main'.
An alternate approach is to use /dbml to generate a .dbml file, then you can edit the .dbml file and re-generate the source:
$ sqlmetal -provider:Sqlite /c "Data Source=foo.db3" /dbml:Foo.dbml
# edit Foo.dbml, changing the /Database/@Class attribute value
$ sqlmetal /code:Foo2.cs Foo.dbml
Unfortunately, this appears to require mono/master to work; using mono 2.8.1's sqlmetal results in a NRE.
More information about the Mono-list