From f4c9bd5af6a6a8676ce31e4658d2dd17fa50e9a0 Mon Sep 17 00:00:00 2001 From: 28810 <28810@YEXIANGQIN> Date: Mon, 30 Dec 2019 12:18:43 +0800 Subject: [PATCH] update readme --- .../ICodeFirstExtensions.cs | 85 ++++++++++++++----- .../readme.md | 70 +++++++++++++++ 2 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 Extensions/FreeSql.Extensions.EfCoreFluentApi/readme.md diff --git a/Extensions/FreeSql.Extensions.EfCoreFluentApi/ICodeFirstExtensions.cs b/Extensions/FreeSql.Extensions.EfCoreFluentApi/ICodeFirstExtensions.cs index e6799c46..5a75ea8c 100644 --- a/Extensions/FreeSql.Extensions.EfCoreFluentApi/ICodeFirstExtensions.cs +++ b/Extensions/FreeSql.Extensions.EfCoreFluentApi/ICodeFirstExtensions.cs @@ -8,30 +8,75 @@ namespace FreeSql.Extensions.EfCoreFluentApi public static class ICodeFirstExtensions { - static void Test() - { - ICodeFirst cf = null; - cf.Entity(eb => - { - eb.Property(b => b.Name).HashColumnType("varchar(50)"); - eb.Property(b => b.FullName).HashColumnType("varchar(60)"); - - eb.HasKey(a => a.Id).HasKey(a => new { a.Id, a.Name }); - eb.HasIndex(a => a.Name).IsUnique().HasName("idx_xxx11"); - }); - } - class TestInfo - { - public int Id { get; set; } - public string Name { get; set; } - public string FullName { get; set; } - public int DefaultValue { get; set; } - } - public static ICodeFirst Entity(this ICodeFirst codeFirst, Action> modelBuilder) { codeFirst.ConfigEntity(tf => modelBuilder(new EfCoreTableFluent(tf))); return codeFirst; } + + static void Test() + { + ICodeFirst cf = null; + cf.Entity(eb => + { + eb.ToTable("tb_song"); + eb.Ignore(a => a.Field1); + eb.Property(a => a.Title).HashColumnType("varchar(50)").IsRequired(); + eb.Property(a => a.Url).HasMaxLength(100); + + eb.Property(a => a.RowVersion).IsRowVersion(); + eb.Property(a => a.CreateTime).HasDefaultValueSql("getdate()"); + + eb.HasKey(a => a.Id); + eb.HasIndex(a => a.Title).IsUnique().HasName("idx_xxx11"); + + //一对多、多对一 + 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)); + }); + } + + public class SongType + { + public int Id { get; set; } + public string Name { get; set; } + + public List Songs { get; set; } + } + + public class Song + { + public int Id { get; set; } + public string Title { get; set; } + public string Url { get; set; } + public DateTime CreateTime { get; set; } + + public int TypeId { get; set; } + public SongType Type { get; set; } + public List Tags { get; set; } + + public int Field1 { get; set; } + public long RowVersion { get; set; } + } + public class Song_tag + { + public int Song_id { get; set; } + public Song Song { get; set; } + + public int Tag_id { get; set; } + public Tag Tag { get; set; } + } + + public class Tag + { + [Column(IsIdentity = true)] + public int Id { get; set; } + + public string Name { get; set; } + + public List Songs { get; set; } + } } } diff --git a/Extensions/FreeSql.Extensions.EfCoreFluentApi/readme.md b/Extensions/FreeSql.Extensions.EfCoreFluentApi/readme.md new file mode 100644 index 00000000..6c637fc3 --- /dev/null +++ b/Extensions/FreeSql.Extensions.EfCoreFluentApi/readme.md @@ -0,0 +1,70 @@ +这个 FreeSql 扩展包,实现与 EfCore FluentApi 95% 相似的使用习惯; + +## 以假乱真 + +```csharp +static void Test() +{ + ICodeFirst cf = null; + cf.Entity(eb => + { + eb.ToTable("tb_song"); + eb.Ignore(a => a.Field1); + eb.Property(a => a.Title).HashColumnType("varchar(50)").IsRequired(); + eb.Property(a => a.Url).HasMaxLength(100); + + eb.Property(a => a.RowVersion).IsRowVersion(); + eb.Property(a => a.CreateTime).HasDefaultValueSql("getdate()"); + + eb.HasKey(a => a.Id); + eb.HasIndex(a => a.Title).IsUnique().HasName("idx_xxx11"); + + //一对多、多对一 + 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)); + }); +} + +public class SongType +{ + public int Id { get; set; } + public string Name { get; set; } + + public List Songs { get; set; } +} + +public class Song +{ + public int Id { get; set; } + public string Title { get; set; } + public string Url { get; set; } + public DateTime CreateTime { get; set; } + + public int TypeId { get; set; } + public SongType Type { get; set; } + public List Tags { get; set; } + + public int Field1 { get; set; } + public long RowVersion { get; set; } +} +public class Song_tag +{ + public int Song_id { get; set; } + public Song Song { get; set; } + + public int Tag_id { get; set; } + public Tag Tag { get; set; } +} + +public class Tag +{ + [Column(IsIdentity = true)] + public int Id { get; set; } + + public string Name { get; set; } + + public List Songs { get; set; } +} +``` \ No newline at end of file