diff --git a/FluentApi.md b/FluentApi.md index b943612..1f2c8eb 100644 --- a/FluentApi.md +++ b/FluentApi.md @@ -1,8 +1,13 @@ -FreeSql 提供使用 Fluent Api, 在外部配置实体的数据库特性,Fluent Api 的方法命名与特性名保持一致,如下: +## 支持 Fluent API + +FreeSql 提供了 Fluent Api 的方式,使用链式调用,可在外部配置实体的数据库特性。`Fluent Api` 的方法命名与特性名保持一致,共三种使用方法,选择**一种即可**: + +> fsql 是一个 IFreeSql 对象、配置尽量只执行一次,避免性能损耗 参考:[《实体特性说明》](实体特性.md) +## ConfigEntity ```csharp fsql.CodeFirst - .ConfigEntity(a => + .ConfigEntity(a => { a.Name("xxdkdkdk1"); a.Property(b => b.Id).Name("Id22").IsIdentity(true); @@ -28,14 +33,10 @@ class TestFluenttb2 { } ``` -> fsql 是一个 IFreeSql 对象 - -> 这段配置尽量只执行一次,避免性能损耗 - -参考:[《实体特性说明》](%e5%ae%9e%e4%bd%93%e7%89%b9%e6%80%a7) - > FreeSql.DbContext v1.4.0+ 实现了 EfCore FluentApi 99% 相似的语法 +## Entity + ```csharp fsql.CodeFirst.Entity(eb => { eb.ToTable("tb_song"); @@ -103,6 +104,54 @@ public class Song { } ``` +## IEntityTypeConfiguration + +以继承接口`IEntityTypeConfiguration`形式配置实体的。 + +- .NET Framework4.0 不支持 + +### 实体配置类 + +```csharp +public class SongConfiguration : IEntityTypeConfiguration +{ + public void Configure(EfCoreTableFluent eb) + { + eb.ToTable("tb_song1"); + eb.Ignore(a => a.Field1); + eb.Property(a => a.Title).HasColumnType("varchar(50)").IsRequired(); + eb.Property(a => a.Url).HasMaxLength(100); + + eb.Property(a => a.RowVersion).IsRowVersion(); + eb.Property(a => a.CreateTime).HasDefaultValueSql("current_timestamp"); + + eb.HasKey(a => a.Id); + eb.HasIndex(a => a.Title).IsUnique().HasName("idx_tb_song1111"); + + //一对多、多对一 + eb.HasOne(a => a.Type).HasForeignKey(a => a.TypeId).WithMany(a => a.Songs); + + //多对多 + eb.HasMany(a => a.Tags).WithMany(a => a.Songs, typeof(Song_tag)); + } +} + +``` + +### 二种使用方式 + +1.单个配置 + +```csharp +fsql.CodeFirst.ApplyConfiguration(new SongConfiguration()); +``` + +2.批量配置 + +```csharp +fsql.CodeFirst.ApplyConfigurationsFromAssembly(typeof(SongConfiguration).Assembly); +``` + ## 优先级 数据库特性 > 实体特性 > FluentApi(配置特性) > Aop(配置特性) diff --git a/_Sidebar.md b/_Sidebar.md index f4cc6da..7455513 100644 --- a/_Sidebar.md +++ b/_Sidebar.md @@ -62,4 +62,5 @@ ## 信息 +* [服务支持](%E6%9C%8D%E5%8A%A1%E6%94%AF%E6%8C%81) * [更新日志](%e6%9b%b4%e6%96%b0%e6%97%a5%e5%bf%97) diff --git a/更新日志.md b/更新日志.md index d085f1a..fa6afad 100644 --- a/更新日志.md +++ b/更新日志.md @@ -1,6 +1,8 @@ 大约每三个月一次版本号,暂时以修复 bug 为主 +> preview 预览版 添加 nuget 源:https://www.myget.org/F/ncc/api/v3/index.json + ## v3.2.651 - **增加 DTO 映射非导航属性的子表查询 ToList,可直接返回集合;** diff --git a/服务支持.md b/服务支持.md new file mode 100644 index 0000000..ca2f74c --- /dev/null +++ b/服务支持.md @@ -0,0 +1,32 @@ +## 💻 开源免费 + +FreeSql 采用 MIT 最宽松的开源协议,永久免费开源。任何公司或个人,都可以使用在任何商业项目中。 + +QQ 技术群:4336577(满员)、8578575(满员)、52508226(在线) + +## 🌳 有偿服务 + +| 服务项目 | 描述 | 价格(RMB) | 付款方式 | +| -- | -- | -- | -- | +| FreeSql 技术支持(企业) | 对企业遇到任何 FreeSql 问题,提供远程协助或紧急功能支持 | 5000/年 | 寄发票后付款 | +| .NET 外包项目 | 价格不低于5万,走公司合同 | 面议 | 按合同付款 | + +联系方式 + +QQ:2881099 + +Weixin:q2881099 + +> 开源不易,未来营造,感恩有你,伴我同行 + +## 💕 自愿打赏 + +L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元、蔡易喋 88.88元、中讯科技 1000元、Good Good Work 24元、炽焰 6.6元、Nothing 100元、兰州天擎赵 500元、哈利路亚 300元、 +无名 100元、蛰伏 99.99元、TCYM 66.66元、MOTA 5元、LDZXG 30元、Near 30元、建爽 66元、无名 200元、LambertWu 100元、无名 18.88元、乌龙 50元、无名 100元、陳怼怼 66.66元、陳怼怼 66.66元、丁淮 100元、李伟坚-Excel催化剂 100元、白狐 6.66元、她微笑的脸y 30元、Eternity²º²¹ 588元、夜归柴门 88元、蔡易喋 666.66元、 +*礼 10元、litrpa 88元、Alax CHOW 200元、Daily 66元、k*t 66元、蓝 100元、*菜 10元、生命如歌 1000元 + +> 超级感谢你的打赏。 + +- [Alipay](https://www.cnblogs.com/FreeSql/gallery/image/338860.html) + +- [WeChat](https://www.cnblogs.com/FreeSql/gallery/image/338859.html)