• dotnetcore EF (entity column definition, sql statement logging)


        class Bird
        {
            public int Number { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
        }
    
        class BirdConfig : IEntityTypeConfiguration<Bird>
        {
            public void Configure(EntityTypeBuilder<Bird> builder)
            {
                builder.ToTable("Bird");
                // nvarchar is changed to varchar, but length is decided by HasMaxLength(50).
                builder.Property(e => e.Name).HasColumnName("bird_name").HasColumnType("nvarchar(80)").HasMaxLength(50).IsRequired();
                builder.HasKey(e => e.Number).HasName("bird_number");  // change key name, not column name here.
                builder.Property(e => e.Number).ValueGeneratedOnAdd().IsRequired();
                builder.Property(e => e.Age).HasDefaultValue(1);
    
                builder.HasIndex(e => e.Name).IsUnique();
                builder.HasIndex(e => new { e.Name, e.Age });
            }
        }
    
        class Book
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public string Author { get; set; }
            public int Age { get; set; }
        }
    
        class BookConfig : IEntityTypeConfiguration<Book>
        {
            public void Configure(EntityTypeBuilder<Book> builder)
            {
                builder.ToTable("Book");
                //builder.ToView("book_view");
                // nvarchar is changed to varchar, but length is decided by HasMaxLength(50).
                builder.Property(e => e.Name).HasColumnType("nvarchar(80)").HasMaxLength(50).IsRequired();
                builder.Property(e => e.Author).HasColumnName("author_name").HasMaxLength(100).IsRequired();
    
                builder.Ignore(e => e.Age);
            }
        }
    
        class Person
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int Age { get; set; }
            public DateTime Birthday { get; set; }
    
            public override string ToString()
            {
                return $"Id:{Id}, Name:{Name}, Age:{Age}, Birthday:{Birthday}";
            }
        }
    
        class PersonConfig : IEntityTypeConfiguration<Person>
        {
            public void Configure(EntityTypeBuilder<Person> builder)
            {
                builder.ToTable("Person");
                builder.Property(e => e.Name).HasMaxLength(50).IsRequired();
            }
        }
    
        class MyDbContext : DbContext
        {
            public DbSet<Person> Persons { get; set; }
            public DbSet<Book> Books { get; set; }
            public DbSet<Bird> Birds { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                base.OnConfiguring(optionsBuilder);
    
                ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    
                optionsBuilder.UseLoggerFactory(loggerFactory); // output sql script to log.
                //optionsBuilder.LogTo(Console.WriteLine);
                optionsBuilder.UseSqlServer("Server=.;Database=demo01;Trusted_Connection=True;MultipleActiveResultSets=True");
            }
    
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
                modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
            }
        }
    
        class Program
        {
            static async Task Main(string[] args)
            {
                await ReadPersons();
            }
    
            private static Task ReadPersons()
            {
                using (MyDbContext ctx = new MyDbContext())
                {
                    var persons = ctx.Persons.Where(p => p.Age > 50);
    
                    //Console.WriteLine(persons.ToQueryString());
                    foreach (Person p in persons)
                    {
                        Console.WriteLine(p);
                    }
                }
    
                return Task.CompletedTask;
            }
    
            private static async Task SavePersons()
            {
                Random random = new Random();
    
                using (MyDbContext ctx = new MyDbContext())
                {
                    for (int i = 0; i < 5; i++)
                    {
                        Person p = new Person()
                        {
                            Name = $"Person_{i}",
                            Age = random.Next(10, 90),
                        };
    
                        ctx.Persons.Add(p);
                    }
                    await ctx.SaveChangesAsync();
                }
    
                Console.WriteLine("done");
            }
        }
    
  • 相关阅读:
    网址集合
    简单工具类-JsonUtil
    简单工具类-CookieUtils
    pom.xml
    jdbc.properties
    springmvc.xml
    applicationContext-redis.xml(spring整合redis集群)
    applicationContext-dao.xml
    web.xml
    环境变量配置及eclipse基本配置
  • 原文地址:https://www.cnblogs.com/mryux/p/15854293.html
Copyright © 2020-2023  润新知