ef ColumnType 有哪些
时间: 2024-10-13 21:08:43 浏览: 21
.Net core下直接执行SQL语句并生成DataTable的实现方法
在 Entity Framework (EF) 中,`ColumnType` 是用来指定数据库列的数据类型。它不是直接作为属性存在,而是通过 DataAnnotations 或 Fluent API 来配置实体类的属性映射到数据库表的列。以下是常用的 `ColumnType` 实现:
1. **`DatabaseType` 枚举**:
- `Boolean`: 表示布尔值 (`bit` 或 `bool` 列).
- `Byte`: 表示单字节整数 (`tinyint` 或 `byte` 列).
- `SByte`: 表示带符号单字节整数 (`smallint` 或 `sbyte` 列).
- `Int16`: 表示带符号双字节整数 (`smallint` 或 `int16` 列).
- `Int32`: 表示带符号四字节整数 (`integer` 或 `int32` 列).
- `Int64`: 表示带符号八字节整数 (`bigint` 或 `int64` 列).
- `DateTime`: 表示日期时间 (`datetime`, `datetime2`, 或 `smalldatetime` 类型).
- `Guid`: 表示全局唯一标识符 (`uniqueidentifier` 列).
- `Char`: 表示固定长度字符串 (`char` 或 `varchar` 根据长度指定).
- `String`: 可变长度字符串 (`nvarchar`, `varchar`, 或 `text` 根据最大长度指定).
- `Decimal`: 表示十进制数 (`numeric` 或 `money` 根据精度和小数部分指定).
- `Double`: 表示双精度浮点数 (`float` 或 `double precision` 列).
- `Single`: 表示单精度浮点数 (`real` 或 `single precision` 列).
2. **Fluent API**:
使用 `HasColumnType` 方法可以更灵活地指定列类型,如上面的 `OnModelCreating` 示例所示:
```csharp
modelBuilder.Entity<YourEntity>()
.Property(e => e.DecimalField)
.HasColumnType("numeric(18, 4)");
```
在实际使用时,你可以结合具体情况选择合适的 `ColumnType`,以便更好地映射到数据库表结构。
阅读全文