创建、读取、更新和删除

下面代码演示新增记录 读取记录 更新记录和删除记录。

       static void Main(string[] args)
        {
            using (var db = new BloggingContext())
            {
                // 新增
                Console.WriteLine("Inserting a new blog");
                db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                db.SaveChanges();

                // 读取
                Console.WriteLine("Querying for a blog");
                var blog = db.Blogs
                    .OrderBy(b => b.BlogId)
                    .First();

                // 修改
                Console.WriteLine("Updating the blog and adding a post");
                blog.Url = "https://devblogs.microsoft.com/dotnet";
                if (blog.Posts==null)
                {
                    blog.Posts = new List<Post>();
                }
                blog.Posts.Add(
                    new Post
                    {
                        Title = "Hello World",
                        Content = "I wrote an app using EF Core!"
                    });
                db.SaveChanges();

                // 删除
                Console.WriteLine("Delete the blog");
                db.Remove(blog);
                db.SaveChanges();
            }
        }Code language: JavaScript (javascript)

Entity Framework 使用一组约定基于实体类的定义来构建模型。 可指定其他配置以补充和/或替代约定的内容。

使用 fluent API 配置模型

可在派生上下文中覆写 OnModelCreating 方法,并使用 ModelBuilder API 来配置模型。 此配置方法最为有效,并可在不修改实体类的情况下指定配置。 Fluent API 配置具有最高优先级,并将替代约定和数据注释。

   public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL(
                @"server=localhost;Database=web2;Uid=root;Pwd=123456");
        }

        //使用 fluent API 配置模型
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            //url字段必填
            modelBuilder.Entity<Blog>()
                .Property(b => b.Url)
                .IsRequired();
        }
    }Code language: HTML, XML (xml)

使用数据注释来配置模型

也可将特性(称为数据注释)应用于类和属性。 数据注释会替代约定,但会被 Fluent API 配置替代。

public class Blog
{
    public int BlogId { get; set; }
    [Required]
    public string Url { get; set; }
}Code language: JavaScript (javascript)

创建迁移

定义初始模型后,即应创建数据库。 若要添加初始迁移,请运行以下命令。

然后执行nuget命令

Add-Migration InitialCreate2

换一个名称,否则会无法生存。

更新数据库

接下来,将迁移应用到数据库以创建架构。

Update-Database

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注