Mapping del tipo personalizzato SQL-CLRSQL-CLR Custom Type Mappings

Il mapping dei tipi tra SQL Server e CLR (Common Language Runtime) viene specificato automaticamente quando si usa lo strumento da riga di comando SQLMetal o Progettazione relazionale oggetti.Type mapping between SQL Server and the common language runtime (CLR) is automatically specified when you use the SQLMetal command-line tool, Object Relational Designer (O/R Designer).

Quando non viene eseguito alcun mapping personalizzato, questi strumenti predefiniti vengono assegnati i mapping dei tipi come descritto in Mapping dei tipi CLR SQL.When no customized mapping is performed, these tools assign default type mappings as described in SQL-CLR Type Mapping. Se si desidera usare mapping dei tipi diversi da quelli predefiniti, è necessario personalizzarli.If you want to type mappings differently from these defaults, you need to do some customization of the type mappings.

Quando si personalizzano i mapping dei tipi, l'approccio consigliato consiste nell'apportare le modifiche in un file DBML intermedio.When customizing type mappings, the recommended approach is to make the changes in an intermediary DBML file. Il file DBML personalizzato può quindi essere usato quando si creano i file di codice e di mapping con SQLMetal o Progettazione relazionale oggetti.Then, your customized DBML file should be used when you create you code and mapping files with SQLMetal or O/R Designer.

Dopo aver creato un'istanza dell'oggetto DataContext dai file di codice e di mapping, tramite il metodo DataContext.CreateDatabase viene creato un database basato sui mapping dei tipi specificati.Once you instantiate the DataContext object from the code and mapping files, the DataContext.CreateDatabase method creates a database based on the type mappings that are specified. Se non vi sono attributi type CLR specificati nei mapping, vengono usati i mapping dei tipi predefiniti.If there are no CLR type attributes specified in the mappings, the default type mappings will be used.

Personalizzazione con SQLMetal o Progettazione relazionale oggettiCustomization with SQLMetal or O/R Designer

Con SQLMetal e Progettazione relazionale oggetti è possibile creare automaticamente un modello a oggetti che include le informazioni sul mapping dei tipi all'interno o all'esterno del file di codice.With SQLMetal and O/R Designer, you can automatically create an object model that includes the type mapping information inside or outside the code file. Poiché questi file vengono sovrascritti da SQLMetal o da Progettazione relazionale oggetti ogni volta che si ricreano i mapping, l'approccio consigliato per specificare mapping dei tipi personalizzati consiste nel personalizzare un file DBML.Because these files are overwritten by SQLMetal or O/R Designer, each time you recreate your mappings, the recommended approach to specifying custom type mappings is to customize a DBML file.

Per personalizzare i mapping dei tipi con SQLMetal o con Progettazione relazionale oggetti, generare innanzitutto un file DBML.To customize type mappings with SQLMetal or O/R Designer, first generate a DBML file. Prima di generare il file di codice o di mapping, modificare quindi il file DBML per identificare i mapping dei tipi desiderati.Then, before generating the code file or mapping file, modify the DBML file to identify the desired type mappings. Con SQLMetal, è necessario modificare manualmente gli attributi Type e DbType nel file DBML per personalizzare il mapping dei tipi.With SQLMetal, you have to manually change the Type and DbType attributes in the DBML file to make your type mapping customizations. Con Progettazione relazionale oggetti, è possibile apportare le modifiche all'interno della finestra di progettazione.With O/R Designer, you can make your changes within the Designer. Per ulteriori informazioni sull'utilizzo di Progettazione relazionale oggetti, vedere LINQ to SQL Tools in Visual Studio.For more information about using the O/R Designer, see LINQ to SQL Tools in Visual Studio.

Nota

Alcuni mapping dei tipi possono comportare eccezioni di overflow o di perdita di dati durante la conversione da o verso il database.Some type mappings may result in overflow or data loss exceptions while translating to or from the database. Esaminare attentamente la matrice del comportamento in fase di esecuzione del mapping dei tipi in Mapping dei tipi CLR SQL prima di apportare le eventuali personalizzazioni.Carefully review the Type Mapping Run-time Behavior Matrix in SQL-CLR Type Mapping before making any customizations.

Affinché le personalizzazioni del mapping dei tipi siano riconosciute da SQLMetal o da Progettazione relazionale oggetti, è necessario assicurarsi che questi strumenti dispongano del percorso al file DBML personalizzato quando si genera il file di codice o il file di mapping esterno.In order for your type mapping customizations to be recognized by SQLMetal or O/R Designer, you need to make sure that these tools are supplied with the path to your custom DBML file when you generate your code file or external mapping file. Sebbene non sia necessario per la personalizzazione del mapping dei tipi, è consigliabile separare sempre le informazioni sul mapping dei tipi dal file di codice e generare il file di mapping dei tipi esterno aggiuntivo.Although not required for type mapping customization, it is recommended that you always separate your type mapping information from your code file and generate the additional external type mapping file. In questo modo, si garantisce maggiore flessibilità in quanto non è necessaria la ricompilazione del file di codice.Doing so will leave some flexibility by not requiring that the code file be recompiled.

Incorporamento delle modifiche al databaseIncorporating Database Changes

Quando il database viene modificato, è necessario aggiornare il file DBML per riflettere tali modifiche.When your database changes, you will need to update your DBML file to reflect those changes. Questo può essere effettuato creando un nuovo file DBML e quindi eseguendo di nuovo le personalizzazioni del mapping dei tipi.One way to do this is to automatically create a new DBML file and then re-do your type mapping customizations. In alternativa, è possibile confrontare le differenze tra il nuovo file DBML e il file DBML personalizzato e aggiornare il file DBML personalizzato manualmente per riflettere le modifiche al database.Alternatively, you could compare the differences between your new DBML file and your customized DBML file and update your custom DBML file manually to reflect the database change.

Vedere ancheSee Also

Mapping del tipo SQL-CLRSQL-CLR Type Mapping
Generazione di codice in LINQ to SQLCode Generation in LINQ to SQL