X Tutup
#region License // The PostgreSQL License // // Copyright (C) 2018 The Npgsql Development Team // // Permission to use, copy, modify, and distribute this software and its // documentation for any purpose, without fee, and without a written // agreement is hereby granted, provided that the above copyright notice // and this paragraph and the following two paragraphs appear in all copies. // // IN NO EVENT SHALL THE NPGSQL DEVELOPMENT TEAM BE LIABLE TO ANY PARTY // FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS // DOCUMENTATION, EVEN IF THE NPGSQL DEVELOPMENT TEAM HAS BEEN ADVISED OF // THE POSSIBILITY OF SUCH DAMAGE. // // THE NPGSQL DEVELOPMENT TEAM SPECIFICALLY DISCLAIMS ANY WARRANTIES, // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY // AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS // ON AN "AS IS" BASIS, AND THE NPGSQL DEVELOPMENT TEAM HAS NO OBLIGATIONS // TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. #endregion using System; using Npgsql.Json.NET; using Npgsql.TypeMapping; using NpgsqlTypes; // ReSharper disable once CheckNamespace namespace Npgsql { /// /// Extension allowing adding the Json.NET plugin to an Npgsql type mapper. /// public static class NpgsqlJsonNetExtensions { /// /// Sets up JSON.NET mappings for the PostgreSQL json and jsonb types. /// /// The type mapper to set up (global or connection-specific) /// A list of CLR types to map to PostgreSQL jsonb (no need to specify NpgsqlDbType.Jsonb) /// A list of CLR types to map to PostgreSQL json (no need to specify NpgsqlDbType.Json) public static INpgsqlTypeMapper UseJsonNet(this INpgsqlTypeMapper mapper, Type[] jsonbClrTypes = null, Type[] jsonClrTypes = null) { mapper.AddMapping(new NpgsqlTypeMappingBuilder { PgTypeName = "jsonb", NpgsqlDbType = NpgsqlDbType.Jsonb, ClrTypes = jsonbClrTypes, TypeHandlerFactory = new JsonbHandlerFactory() }.Build()); mapper.AddMapping(new NpgsqlTypeMappingBuilder { PgTypeName = "json", NpgsqlDbType = NpgsqlDbType.Json, ClrTypes = jsonClrTypes, TypeHandlerFactory = new JsonHandlerFactory() }.Build()); return mapper; } } }
X Tutup