实体框架连接

实体框架公开了抽象类,这些抽象类用于以 DbContext 等类的形式与底层数据库交互。这些上下文通常由 DbSet<T> 属性组成,这些属性公开可以查询的可用集合:

public class ExampleContext: DbContext 
{ 
    public virtual DbSet<Widgets> Widgets { get; set; } 
}

DbContext 本身将处理与数据库的连接,并且通常会从配置中读取相应的连接字符串数据以确定如何建立连接:

public class ExampleContext: DbContext 
{ 
    // The parameter being passed in to the base constructor indicates the name of the 
    // connection string
    public ExampleContext() : base("ExampleContextEntities")
    {
    }

    public virtual DbSet<Widgets> Widgets { get; set; } 
}

执行实体框架查询

实际上执行实体框架查询可能非常简单,只需要你创建上下文的实例,然后使用其上的可用属性来提取或访问你的数据

using(var context = new ExampleContext())
{
      // Retrieve all of the Widgets in your database
      var data = context.Widgets.ToList();
}

实体框架还提供了一个广泛的更改跟踪系统,可以通过调用 SaveChanges() 方法将更改推送到数据库来处理数据库中的更新条目:

using(var context = new ExampleContext())
{
      // Grab the widget you wish to update
      var widget = context.Widgets.Find(w => w.Id == id);
      // If it exists, update it
      if(widget != null)
      {
           // Update your widget and save your changes
           widget.Updated = DateTime.UtcNow;
           context.SaveChanges();
      }
}