// <summary> // Chooses the appropriate SqlDbType for the given binary type. // </summary> private static SqlDbType GetBinaryDbType(TypeUsage type) { Debug.Assert( type.EdmType.BuiltInTypeKind == BuiltInTypeKind.PrimitiveType && PrimitiveTypeKind.Binary == ((PrimitiveType)type.EdmType).PrimitiveTypeKind, "only valid for binary type"); // Specific type depends on whether the binary value is fixed length. By default, assume variable length. return type.IsFixedLength() ? SqlDbType.Binary : SqlDbType.VarBinary; }
private static SqlDbType GetStringDbType(TypeUsage type) { Debug.Assert( type.EdmType.BuiltInTypeKind == BuiltInTypeKind.PrimitiveType && PrimitiveTypeKind.String == ((PrimitiveType)type.EdmType).PrimitiveTypeKind, "only valid for string type"); SqlDbType dbType; if (type.EdmType.Name.ToLowerInvariant() == "xml") { dbType = SqlDbType.Xml; } else { // Specific type depends on whether the string is a unicode string and whether it is a fixed length string. // By default, assume widest type (unicode) and most common type (variable length) bool unicode; if (!type.TryGetIsUnicode(out unicode)) { unicode = true; } if (type.IsFixedLength()) { dbType = (unicode ? SqlDbType.NChar : SqlDbType.Char); } else { dbType = (unicode ? SqlDbType.NVarChar : SqlDbType.VarChar); } } return dbType; }