灵川建设局网站,全球建筑设计公司排名,wordpress的链接功能,合作加盟主键(Primary Key) class Topic {[Column(IsPrimary true)]public int Id { get; set; }
} 约定#xff1a; 当没有指明主键时#xff0c;命名为 id 的字段将成为主键#xff1b;#xff08;不区分大小写#xff09;当主键是 Guid 类型时#xff0c;插入时会自动创建 true)]public int Id { get; set; }
} 约定 当没有指明主键时命名为 id 的字段将成为主键不区分大小写当主键是 Guid 类型时插入时会自动创建有序、不重复的值所以不需要自己赋值支持分布式自增(Identity) class Topic {[Column(IsIdentity true)]public int Id { get; set; }
} 约定 当没有指明主键时标记自增的成员将成为主键唯一键(Unique Key) class AddUniquesInfo {public Guid id { get; set; }[Column(Unique uk_phone)]public string phone { get; set; }[Column(Unique uk_group_index, uk_group_index22)]public string group { get; set; }[Column(Unique uk_group_index)]public int index { get; set; }[Column(Unique uk_group_index22)]public string index22 { get; set; }
} 唯一键在多个属性指定相同的标识代表联合键可使用逗号分割多个 UniqueKey 名。 数据库类型(DbType) class Topic {[Column(DbType varchar(128) NOT NULL)]public string Title { get; set; }
} 可以在类型上指定 NOT NULL也可以通过 [Column(IsNullable false)] 设置 0.9.12 版本增加了对 MaxLength 特性的解析避免字符串常用时的麻烦上面的 varchar(128) 可改写成 class Topic {[MaxLength(128)]public string Title { get; set; }
} 说明由于内部按名称反射查找特性的所以 MaxLengthAttribute 可以在任意地方定义。
该特性通常定义在 System.ComponentModel.DataAnnotations.MaxLengthAttribute。
如果找不到该类可自行在项目中定义名称为 MaxLengthAttribute 的特性类如下public class MaxLengthAttribute : Attribute
{public int Length { get; }public MaxLengthAttribute(int length){this.Length length;}
} 可空(Nullable) class Topic {[Column(IsNullable false)]public string Title { get; set; }
} 在不指定 DbType、IsNullable 时FreeSql 提供默认设定如 int - not null不可为空int? - null可空一般在使用 string 类型时才需要手工指明是否可空string 默认可空 忽略(Ignore) class Topic {[Column(IsIgnore true)]public string Title { get; set; }
} 当实体有属性不需要映射的时候使用内部自动忽略了对象的映射 当实体内的属性不是可接受的类型时可以不用指定该特定如下不必要的指定 class Topic {[Column(IsIgnore true)]public Topic Parent { get; set; }
} 乐观锁(RowVersion) class Topic {public Guid id { get; set; }public string Title { get; set; }[Column(IsVersion true)]public int Version { get; set; }
} 更新整个实体数据时在并发情况下极容易造成旧数据将新的记录更新。 行级锁的原理是利用实体某字段如long version更新前先查询数据此时 version 为 1更新时产生的 SQL 会附加 where version 1当修改失败时即 Affrows 0抛出异常。 每个实体只支持一个行级锁属性。 适用 SetSource 更新无论使用什么方法更新 version 的值都会增加 1 自定义类型映射(MapType) 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_SysConfigT
{[Column(IsPrimary true)]public string Name { get; set; }[JsonMap]public T Config { get; set; }
} 字段位置(Position) 适用场景当实体类继承时CodeFirst创建表的字段顺序可能不是想要的通过该特性可以设置顺序。 创建表时指定字段位置如[Column(Position 1]可为负数即反方向位置 可插入(CanInsert)、可更新(CanUpdate) 该字段是否可以插入或更新默认值true指定为false插入或更新时该字段会被忽略。 当指明了 InsertColumn/UpdateColumns 等方法时该特性作用可能失效。例如 CanInsert false 时又指明了 InsertColumns 该属性则仍然会插入。 名称 FreeSql 默认使用实体的类名或属性名与数据库映射也可以指定映射的名称 指定实体的表名指定 Name 后实体类名变化不影响数据库对应的表。FreeSql尽量支持了对多数据库或schema支持不防试试指定表名为其他数据库.表名不同数据库的指定方式有差异这一点以后深入解答。 [Table(Name db2.tb_topic111)]
class Topic {//...
} 指定实体的表名修改为实体类名。指定数据库旧的表名修改实体命名时同时设置此参数为修改之前的值CodeFirst才可以正确修改数据库表否则将视为【创建新表】。 [Table(OldName Topic)]
class Topic2 {//...
} 实体的属性也有相同的功能[Column(Name xxx)] 禁用迁移 IFreeSql.CodeFirst.IsAutoSyncStructure 可设置全局【自动迁移结构】功能也可通过 FreeSqlBuilder.UseAutoSyncStructure(true) 创建 IFreeSql 的时候设置功能。 当【实体类】对应的是数据库【视图】或者其他时可通过 [Table(DisableSyncStructure true)] 禁用指定的实体迁移操作。 [Table(DisableSyncStructure true)]
class ModelDisableSyncStructure {[Column(IsPrimary false)]public int pkid { get; set; }
} 备注 FreeSql CodeFirst 支持将 c# 代码内的注释迁移至数据库的备注。先决条件 1、实体类所在程序集需要开启 xml 文档功能 2、xml 文件必须与程序集同目录且文件名xxx.dll - xxx.xml 系列文章导航 一入门二自动迁移实体三实体特性四实体特性 Fluent Api五插入数据六批量插入数据七插入数据时忽略列八插入数据时指定列九删除数据十更新数据十一更新数据 Where十二更新数据时指定列十三更新数据时忽略列十四批量更新数据十五查询数据十六分页查询十七联表查询十八导航属性十九多表查询二十多表查询 WhereCascade二十一查询返回数据二十二Dto 映射查询二十三分组、聚合二十四Linq To Sql 语法使用介绍二十五延时加载二十六贪婪加载 Include、IncludeMany、Dto、ToList二十七将已写好的 SQL 语句与实体类映射进行二次查询二十八事务二十九Lambda 表达式三十读写分离三十一分区分表三十二Aop三十三CodeFirst 类型映射三十四CodeFirst 迁移说明三十五CodeFirst 自定义特性转载于:https://www.cnblogs.com/FreeSql/p/11531302.html