在控制台应用程序中调用实体框架类
本文关键字:实体 框架 调用 控制台 应用程序 | 更新日期: 2023-09-27 18:30:07
我使用Visual Studio 2012创建了一个新的控制台应用程序,并使用实体框架映射了我的数据库表。现在,当我使用MVC等web应用程序时,我经常做以下事情,即创建一个表示实体的新对象并引用所有可用的实体:
class Program
{
SEntities sd = new SEntities();
static void Main(string[] args)
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
但这将引发以下错误:
非静态字段、方法或属性"ConsoleApplication1.Program.sd"需要对象引用。。。。。''控制台应用程序1''Program.cs 16 17控制台应用程序1
我读了一些文章,似乎我需要通过如下打开using
块来引用控制台应用程序中的Entity Framework类:
class Program
{
static void Main(string[] args)
{
using (SEntities sd = new SEntities())
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
}
所以我的问题是,为什么我不能遵循第一种方法,将整个方法封装在一个使用块的声音中,这一点都不奇怪?
问题是您试图在静态方法中使用非静态字段。一个没有在静态方法的作用域中声明为更具体的。using
块并不是导致第二个代码块工作的原因。它之所以有效,是因为你在静态方法内部而不是外部有非静态字段
但是,实际上应该使用using
块,因为这将确保上下文被释放。