在我的控制台应用程序中调用 Entity Framework class
Calling an Entity Framework class inside my console application
我使用 Visual Studio 2012 创建了一个新的控制台应用程序,并使用 Entity Framework 映射了我的数据库表。现在,当我使用 MVC 等 Web 应用程序时,我通常会执行以下操作,即创建一个表示实体的新对象并引用所有可用实体:
class Program
{
SEntities sd = new SEntities();
static void Main(string[] args)
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
但这会引发以下错误:
An object reference is required for the non-static field, method, or property 'ConsoleApplication1.Program.sd' .....\ConsoleApplication1\Program.cs 16 17 ConsoleApplication1
我阅读了一些文章,似乎我需要通过打开 using
块来在我的控制台应用程序中引用 Entity Framework class,如下所示:
class Program
{
static void Main(string[] args)
{
using (SEntities sd = new SEntities())
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
}
所以我的问题是,为什么我不能按照第一种方法将整个方法包装在一个 using 块中听起来有点奇怪?
问题是您试图在静态方法中使用 non-static 字段。一个没有在静态方法范围内声明的更具体一点。 using
块不是导致第二个代码块工作的原因。它起作用的原因是因为您在静态方法内部而不是外部有 non-static 字段。
但是,实际上您应该使用 using
块,因为这将确保释放上下文。
我使用 Visual Studio 2012 创建了一个新的控制台应用程序,并使用 Entity Framework 映射了我的数据库表。现在,当我使用 MVC 等 Web 应用程序时,我通常会执行以下操作,即创建一个表示实体的新对象并引用所有可用实体:
class Program
{
SEntities sd = new SEntities();
static void Main(string[] args)
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
但这会引发以下错误:
An object reference is required for the non-static field, method, or property 'ConsoleApplication1.Program.sd' .....\ConsoleApplication1\Program.cs 16 17 ConsoleApplication1
我阅读了一些文章,似乎我需要通过打开 using
块来在我的控制台应用程序中引用 Entity Framework class,如下所示:
class Program
{
static void Main(string[] args)
{
using (SEntities sd = new SEntities())
{
sd.Levels.Add(new Level() { Name = "from CA" });
sd.SaveChanges();
}
}
}
所以我的问题是,为什么我不能按照第一种方法将整个方法包装在一个 using 块中听起来有点奇怪?
问题是您试图在静态方法中使用 non-static 字段。一个没有在静态方法范围内声明的更具体一点。 using
块不是导致第二个代码块工作的原因。它起作用的原因是因为您在静态方法内部而不是外部有 non-static 字段。
但是,实际上您应该使用 using
块,因为这将确保释放上下文。