下面代码演示新增记录 读取记录 更新记录和删除记录。
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