为什么EntityFramework更新上下文,但不更新数据库?

时间:2014-02-05 21:00:06

标签: c# sql database entity-framework linq-to-entities

我有一个EntityFramework测试应用。 Select查询效果很好。我想Insert我的数据库的新行。我在下面的代码中这样做:

static void Main(string[] args)
    {
        using (Database1Entities context = new Database1Entities())
        {
            Console.WriteLine("Current data in Table:");
            Console.WriteLine();

            var selectQuery = from person in context.Person
                              select person;

            foreach (var person in selectQuery)
            {
                Console.WriteLine("{0}. {1} - {2}", person.id, person.Name, person.Age);
            }

            Console.WriteLine();
            Console.WriteLine("---------------------------------------");
            Console.WriteLine("Try to add the new object to a table:");
            Console.WriteLine();

            Person newItem = new Person();
            newItem.Name = "Tanya";
            newItem.Age = 20;

            context.Person.Add(newItem);
            context.SaveChanges();

            var selectQuery2 = from person in context.Person
                               select person;

            foreach (var person in selectQuery2)
            {
                Console.WriteLine("{0}. {1} - {2}", person.id, person.Name, person.Age);
            }
        }

        Console.ReadKey();
    }

我有这个输出:

  

表中的当前数据:

     
      
  1. Vlad - 20
  2.   
  3. Igor - 27
  4.         
         

    尝试将新对象添加到表中:

         
        
    1. Vlad - 20
    2.   
    3. Igor - 27
    4.   
    5. Tanya - 20
    6.   

这个数据在数据库中:

id   name    age
 1   Vlad     20
 2   Igor     27

输出显示发生了更改,但数据库未更新,没有更改!

2 个答案:

答案 0 :(得分:2)

尝试这样做

Context.Set<Person>().Add(newItem);
Context.SaveChanges();

编辑1

如果上述解决方案无效,请尝试更改此实体状态

Context.Entry<Person>(newItem).State = EntityState.Added;
Context.SaveChanges();

答案 1 :(得分:0)

哦,这是我的失败。我正在寻找项目中DB的更改,而不是在调试文件夹中。如果我从调试文件夹启动程序,它可以正常工作。

相关问题