-
Notifications
You must be signed in to change notification settings - Fork 857
类型映射
28810 edited this page Jul 31, 2020
·
35 revisions
class EnumTestMap {
public Guid id { get; set; }
[Column(MapType = typeof(string))]
public ToStringMapEnum enum_to_string { get; set; }
[Column(MapType = typeof(string))]
public ToStringMapEnum? enumnullable_to_string { get; set; }
[Column(MapType = typeof(int))]
public ToStringMapEnum enum_to_int { get; set; }
[Column(MapType = typeof(int?))]
public ToStringMapEnum? enumnullable_to_int { get; set; }
[Column(MapType = typeof(string))]
public BigInteger biginteger_to_string { get; set; }
[Column(MapType = typeof(string))]
public BigInteger? bigintegernullable_to_string { get; set; }
}
public enum ToStringMapEnum { 中国人, abc, 香港 }
应该不需要解释了吧?
BigInteger 都可以映射使用了,但请注意:仅仅是 CURD 方便, Equals == 判断可以使用,无法实现 + - * / 等操作;
v0.9.15 版本还可以将值对象映射成 typeof(string),安装扩展包:
dotnet add package FreeSql.Extensions.JsonMap
fsql.UseJsonMap(); //开启功能
class TestConfig {
public int clicks { get; set; }
public string title { get; set; }
}
[Table(Name = "sysconfig")]
public class S_SysConfig {
[Column(IsPrimary = true)]
public string Name { get; set; }
[JsonMap]
public TestConfig Config { get; set; }
}
csharp | MySql | SqlServer | PostgreSQL | Oracle | Sqlite | 达梦 |
---|---|---|---|---|---|---|
bool | bool? | bit(1) | bit | bool | number(1) | boolean | number(1) |
sbyte | sbyte? | tinyint(3) | smallint | int2 | number(4) | smallint | number(4) |
short | short? | smallint(6) | smallint | int2 | number(6) | smallint | number(6) |
int | int? | int(11) | int | int4 | number(11) | integer | number(11) |
long | long? | bigint(20) | bigint | int8 | number(21) | integer | number(21) |
byte | byte? | tinyint(3) unsigned | tinyint | int2 | number(3) | int2 | number(3) |
ushort | ushort? | smallint(5) unsigned | int | int4 | number(5) | unsigned | number(5) |
uint | uint? | int(10) unsigned | bigint | int8 | number(10) | decimal(10,0) | number(10) |
ulong | ulong? | bigint(20) unsigned | decimal(20,0) | numeric(20,0) | number(20) | decimal(21,0) | number(20) |
double | double? | double | float | float8 | float(126) | double | double |
float | float? | float | real | float4 | float(63) | float | real |
decimal | decimal? | decimal(10,2) | decimal(10,2) | numeric(10,2) | number(10,2) | decimal(10,2) | number(10,2) |
Guid | Guid? | char(36) | uniqueidentifier | uuid | char(36 CHAR) | character(36) | char(36) |
TimeSpan | TimeSpan? | time | time | time | interval day(2) to second(6) | bigint | - |
DateTime | DateTime? | datetime | datetime | timestamp | timestamp(6) | datetime | timestamp(6) |
DateTimeOffset | DateTimeOffset? | - | datetimeoffset | - | timestamp(6) with local time zone | - | timestamp(6) |
Enum | Enum? | enum | int | int4 | number(16) | mediumint | number(16) |
FlagsEnum | FlagsEnum? | set | bigint | int8 | number(32) | bigint | number(32) |
byte[] | varbinary(255) | varbinary(255) | bytea | blob | blob | blob |
string | varchar(255) | nvarchar(255) | varchar(255) | nvarchar2(255) | nvarchar(255) | nvarchar2(255) |
以上类型和长度是默认值,可手工设置 Column 特性 DbType 值
string 指定长度 [Column(DbType = "varchar(max)")] 或者 [MaxLength(-1)] 或者 [Column(StringLength = -1)],当长度 -1 时产生的映射如下:
MySql | PostgreSQL | SqlServer | Oracle | Sqlite | MsAccess | 达梦 | 金仓 | 神通 |
---|---|---|---|---|---|---|---|---|
text | text | varchar(max) | nclob | text | longtext | text | text | text |
注意:Oracle nclob 需要 v1.3.2+ 版本才支持,否则将映射 nvarchar2(4000)
注意:MySql [MaxLength(-2)] 或者 [Column(StringLength = -2)] 映射类型 longtext,其他数据库的映射规则与 -1 相同
decimal 指定长度 [Column(Precision = 10, Scale = 2)]
csharp | MySql |
---|---|
MygisPoint | point |
MygisLineString | linestring |
MygisPolygon | polygon |
MygisMultiPoint | multipoint |
MygisMultiLineString | multilinestring |
MygisMultiPolygon | multipolygon |
csharp | PostgreSQL |
---|---|
BitArray | varbit(64) |
NpgsqlPoint | NpgsqlPoint? | point |
NpgsqlLine | NpgsqlLine? | line |
NpgsqlLSeg | NpgsqlLSeg? | lseg |
NpgsqlBox | NpgsqlBox? | box |
NpgsqlPath | NpgsqlPath? | path |
NpgsqlPolygon | NpgsqlPolygon? | polygon |
NpgsqlCircle | NpgsqlCircle? | circle |
(IPAddress Address, int Subnet) | (IPAddress Address, int Subnet)? | cidr |
IPAddress | inet |
PhysicalAddress | macaddr |
NpgsqlRange<int> | NpgsqlRange<int>? | int4range |
NpgsqlRange<long> | NpgsqlRange<long>? | int8range |
NpgsqlRange<decimal> | NpgsqlRange<decimal>? | numrange |
NpgsqlRange<DateTime> | NpgsqlRange<DateTime>? | tsrange |
PostgisPoint | geometry |
PostgisLineString | geometry |
PostgisPolygon | geometry |
PostgisMultiPoint | geometry |
PostgisMultiLineString | geometry |
PostgisMultiPolygon | geometry |
PostgisGeometry | geometry |
PostgisGeometryCollection | geometry |
Dictionary<string, string> | hstore |
JToken | jsonb |
JObject | jsonb |
JArray | jsonb |
数组 | 以上所有类型都支持,包括默认类型 |
从数据库导入特性 > 实体特性 > FluentApi > Aop