<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/4.2.2">
</HEAD>
<BODY>
Hello,<BR>
<BR>
while trying to apply SqlMetal on a PostGIS database, I received error messages about unknown SQL data types, some of them being geographic types, some others being simply type aliases<BR>
<BR>
Apparently, the "DbMetal way" of handling this is to derive from the DbSchemaLoader (PgsqlSchemaLoader in this case), override SchemaLoader's MapDbType(), and then invoke dbmetal/sqlmetal --with-schemaloader=My.Custom.SchemaLoader,MyAssembly<BR>
<BR>
the problem: <BR>
<BLOCKQUOTE>
    during the DbLinq-to-Mono integration, the "ISchemaLoader / SchemaLoader" extensibility point has been shut using MONO_STRICT. The only assembly allowed to know about these useful types is sqlmetal.exe itself.<BR>
    <BR>
    Even if you were to build a new ISchemaLoader implementation from scratch, you can't supply it to sqlmetal anyway, because you cannot reference <I>the</I> DbLinq.Vendor.ISchemaLoader from Mono's System.Data.Linq, since it is also internal because of MONO_STRICT.<BR>
</BLOCKQUOTE>
    <BR>
In effect, you now may use --with-schemaloader to force sqlmetal.exe to use SqlServerSchemaLoader against an Oracle database, but that's about all you can do with that option.<BR>
<BR>
My question: <BR>
    <BR>
    Would a patch <I>removing</I> the "#if !MONO_STRICT .. public" condition from ISchemaLoader & common implementations be accepted in Mono System.Data.Linq ? I notice Mono's S.D.Linq already leaks some bits from DbLinq.Util, it doesn't seem to be that big a deal to let ISchemaLoader escape as well, would it be ?<BR>
    If such a patch cannot be included, what is the best way to proceed then ?<BR>
<BR>
<BR>
second question:<BR>
    DbLinq.Vendor.DbSchemaLoader's MapDbType method has a smell in its "switch/case" statement. Apparently, that has been written much earlier than the availability of a proper SchemaLoader child class per provider.  So in effect, all type names from all dialects are tested against every database, regardless of the provider. Wouldn't it be sensible to push down the type tests into each provider ? I would like to do this.<BR>
<BR>
thanks in advance.<BR>
<BR>
    -- Cyrille<BR>
<BR>
</BODY>
</HTML>