mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-16 05:10:55 +08:00
update
58
实体特性.md
58
实体特性.md
@@ -1,6 +1,39 @@
|
||||
|
||||
v1.4.0+ 已自动识别 EFCore 实体特性 Key/Required/NotMapped/MaxLength/StringLength/DatabaseGenerated/Table/Column
|
||||
|
||||
## 名称
|
||||
|
||||
FreeSql 默认使用实体的类名,或属性名与数据库映射,也可以指定映射的名称;
|
||||
|
||||
指定实体的表名,指定 Name 后,实体类名变化不影响数据库对应的表。FreeSql尽量支持了对多数据库或schema支持,不防试试指定表名为:其他数据库.表名,不同数据库的指定方式有差异,这一点以后深入解答。
|
||||
|
||||
```csharp
|
||||
[Table(Name = "db2.tb_topic111")]
|
||||
class Topic {
|
||||
//...
|
||||
}
|
||||
```
|
||||
|
||||
> 注意:尽量不要使用带点的表名,只有 MySql/Sqlite 对此类表名支持 CodeFirst。但是它不影响 CRUD 功能,使用 [Table(Name = "\`sys.config\`")] 解决
|
||||
|
||||
> 指定表名的几种方法,优先级从小到大:
|
||||
|
||||
- 1、实体类名
|
||||
- 2、Aop fsql.Aop.ConfigEntity += (_, e) => e.ModifyResult.Name = "public.tabname"
|
||||
- 3、FluentApi fsql.CodeFirst.ConfigEntity(a => a.Name("public.tabname"))
|
||||
- 4、[Table(Name = "public.tabname")]
|
||||
- 5、AsTable fsql.Select<T>().AsTable((_, old) => "public.tabname").ToList()
|
||||
|
||||
指定实体的表名,修改为实体类名。指定数据库旧的表名,修改实体命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库表;否则将视为【创建新表】。
|
||||
```csharp
|
||||
[Table(OldName = "Topic")]
|
||||
class Topic2 {
|
||||
//...
|
||||
}
|
||||
```
|
||||
|
||||
> 实体的属性也有相同的功能,[Column(Name = "xxx")]
|
||||
|
||||
## 主键(Primary Key)
|
||||
|
||||
```csharp
|
||||
@@ -247,31 +280,6 @@ public string geo { get; set; }
|
||||
//WHERE (a.[id] = 'c7227d5e-0bcf-4b71-8f0f-d69a552fe84e')
|
||||
```
|
||||
|
||||
## 名称
|
||||
|
||||
FreeSql 默认使用实体的类名,或属性名与数据库映射,也可以指定映射的名称;
|
||||
|
||||
指定实体的表名,指定 Name 后,实体类名变化不影响数据库对应的表。FreeSql尽量支持了对多数据库或schema支持,不防试试指定表名为:其他数据库.表名,不同数据库的指定方式有差异,这一点以后深入解答。
|
||||
|
||||
```csharp
|
||||
[Table(Name = "db2.tb_topic111")]
|
||||
class Topic {
|
||||
//...
|
||||
}
|
||||
```
|
||||
|
||||
> 注意:尽量不要使用带点的表名,只有 MySql/Sqlite 对此类表名支持 CodeFirst。但是它不影响 CRUD 功能,使用 [Table(Name = "\`sys.config\`")] 解决
|
||||
|
||||
指定实体的表名,修改为实体类名。指定数据库旧的表名,修改实体命名时,同时设置此参数为修改之前的值,CodeFirst才可以正确修改数据库表;否则将视为【创建新表】。
|
||||
```csharp
|
||||
[Table(OldName = "Topic")]
|
||||
class Topic2 {
|
||||
//...
|
||||
}
|
||||
```
|
||||
|
||||
> 实体的属性也有相同的功能,[Column(Name = "xxx")]
|
||||
|
||||
## 禁用迁移
|
||||
|
||||
IFreeSql.CodeFirst.IsAutoSyncStructure 可设置全局【自动迁移结构】功能,也可通过 FreeSqlBuilder.UseAutoSyncStructure(true) 创建 IFreeSql 的时候设置功能。
|
||||
|
||||
Reference in New Issue
Block a user