mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 增加 FreeSql.DbContext OnModelCreating 虚方法,实现在 DbContext 使用 FluentApi;#4 - 移除 FreeSql.Extensions.EfCoreFluentApi,功能移至 FreeSql.DbContext;
This commit is contained in:
		@@ -5,56 +5,109 @@ using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace dbcontext_01
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    public class SongContext : DbContext
 | 
			
		||||
    {
 | 
			
		||||
        public SongContext() : base() { }
 | 
			
		||||
        public SongContext(IFreeSql fsql) : base(fsql, null) { }
 | 
			
		||||
 | 
			
		||||
        public DbSet<Song> Songs { get; set; }
 | 
			
		||||
        public DbSet<Tag> Tags { get; set; }
 | 
			
		||||
 | 
			
		||||
        protected override void OnConfiguring(DbContextOptionsBuilder builder)
 | 
			
		||||
        {
 | 
			
		||||
            builder.UseFreeSql(Startup.Fsql);
 | 
			
		||||
            //这里直接指定一个静态的 IFreeSql 对象即可,切勿重新 Build()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected override void OnModelCreating(ICodeFirst codefirst)
 | 
			
		||||
        {
 | 
			
		||||
            codefirst.Entity<Song>(eb =>
 | 
			
		||||
            {
 | 
			
		||||
                eb.ToTable("tb_song");
 | 
			
		||||
                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 => new { a.Id, 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));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            codefirst.Entity<SongType>(eb =>
 | 
			
		||||
            {
 | 
			
		||||
                eb.HasMany(a => a.Songs).WithOne(a => a.Type).HasForeignKey(a => a.TypeId);
 | 
			
		||||
 | 
			
		||||
                eb.HasData(new[]
 | 
			
		||||
                {
 | 
			
		||||
                    new SongType
 | 
			
		||||
                    {
 | 
			
		||||
                        Id = 1,
 | 
			
		||||
                        Name = "流行",
 | 
			
		||||
                        Songs = new List<Song>(new[]
 | 
			
		||||
                        {
 | 
			
		||||
                            new Song{ Title = "真的爱你" },
 | 
			
		||||
                            new Song{ Title = "爱你一万年" },
 | 
			
		||||
                        })
 | 
			
		||||
                    },
 | 
			
		||||
                    new SongType
 | 
			
		||||
                    {
 | 
			
		||||
                        Id = 2,
 | 
			
		||||
                        Name = "乡村",
 | 
			
		||||
                        Songs = new List<Song>(new[]
 | 
			
		||||
                        {
 | 
			
		||||
                            new Song{ Title = "乡里乡亲" },
 | 
			
		||||
                        })
 | 
			
		||||
                    },
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            codefirst.SyncStructure<SongType>();
 | 
			
		||||
            codefirst.SyncStructure<Song>();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class SongType
 | 
			
		||||
    {
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
        public List<Song> Songs { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class Song
 | 
			
		||||
    {
 | 
			
		||||
        [Column(IsIdentity = true)]
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public DateTime? Create_time { get; set; }
 | 
			
		||||
        public bool? Is_deleted { get; set; }
 | 
			
		||||
        public string Title { get; set; }
 | 
			
		||||
        public string Url { get; set; }
 | 
			
		||||
        public DateTime CreateTime { get; set; }
 | 
			
		||||
 | 
			
		||||
        public virtual ICollection<Tag> Tags { get; set; }
 | 
			
		||||
        public int TypeId { get; set; }
 | 
			
		||||
        public SongType Type { get; set; }
 | 
			
		||||
        public List<Tag> Tags { get; set; }
 | 
			
		||||
 | 
			
		||||
        [Column(IsVersion = true)]
 | 
			
		||||
        public long versionRow { get; set; }
 | 
			
		||||
        public int Field1 { get; set; }
 | 
			
		||||
        public long RowVersion { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
    public class Song_tag
 | 
			
		||||
    {
 | 
			
		||||
        public int Song_id { get; set; }
 | 
			
		||||
        public virtual Song Song { get; set; }
 | 
			
		||||
        public Song Song { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int Tag_id { get; set; }
 | 
			
		||||
        public virtual Tag Tag { get; set; }
 | 
			
		||||
        public Tag Tag { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class Tag
 | 
			
		||||
    {
 | 
			
		||||
        [Column(IsIdentity = true)]
 | 
			
		||||
        public int Id { get; set; }
 | 
			
		||||
        public int? Parent_id { get; set; }
 | 
			
		||||
        public virtual Tag Parent { get; set; }
 | 
			
		||||
 | 
			
		||||
        public decimal? Ddd { get; set; }
 | 
			
		||||
        public string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
        public virtual ICollection<Song> Songs { get; set; }
 | 
			
		||||
        public virtual ICollection<Tag> Tags { get; set; }
 | 
			
		||||
        public List<Song> Songs { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user