3.2.2 创建数据上下文类
1. 设置数据上下文类的名字与web.config中的连接字符串名字一致
<connectionStrings> <add name="TestContext" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=TestContext;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\TestContext.mdf" /> </connectionStrings>
在以上链接字符串中,通常保持“name”、“Initial Catalog”和“AttachDBFilename”三个名字一致。其中name为服务器连接中数据连接的名字,Initial Catalog为localdb数据库服务器上的数据库名字,AttachDBFilename为App_Data文件夹下的数据文件名字。
2. 在数据上下文类中指定所采用的连接字符串
在第2章使用支架添加控制器时,vs会自动帮我们创建数据上下文类,它在EF Code First开发模式下非常重要,主要用来追踪与识别对象的变更追踪。少了这个类别,Entity Framework就完全无法运作。
自动添加的数据上下文类代码如下。
public class MvcGuestbookContext : DbContext
{
public MvcGuestbookContext()
: base("name=DefaultConnection")
{
}
public DbSet<Guestbook> Guestbooks { get; set; }
}
构造函数中的DefaultConnection为连接字符串的名字,这个连接字符串必须存储在web.config中。DbSet<Guest>类型的Guestbooks变量,代表的是Guestbook这个类型的数据库集合对象。你可以把Guestbooks属性想象成一个数据库表格,然后把该集合中的每个Gustbook对象想象成是数据表中一条一条的数据。
3. 设置模型为只读
如果希望将Guestbook数据模型被声明成只读,不让应用程序对其写入任何数据,那么可以修改数据上下文类,让DbSet集合属性只提供get实体。
public class MvcGuestbookContext : DbContext
{
public MvcGuestbookContext()
: base("name=DefaultConnection")
{
}
public DbSet<Guestbook> Guestbooks
{
get { return Set<Guestbook>(); }
}
}