无法使用 Entity Framework Code First 方法生成数据库 table

Unable to generate database table using Entity Framework Code First approach

写了下面的简单代码来学习Entity FrameworkCode First的方法。但是,我无法让它工作。

也没有收到任何错误。验证生成的.mdf文件时,没有找到记录。

即使在调试代码时也无法识别问题。谁能告诉我哪里做错了!

下面是我的代码。

下面是人物class

namespace EFCF
{
    public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}

上下文如下class

namespace EFCF
{
    public class Context : DbContext
    {
        public DbSet<Person> Persons { get; set; }
    }
}

下面是在控制台应用程序中编写的测试程序。

namespace TestEFCF
{
    class Program
    {
        static void Main(string[] args)
        {
            //Insert person record
            using (var context = new Context())
            {
                context.Database.CreateIfNotExists();
                Person person = new Person
                {
                    PersonId = 1001,
                    FirstName = "Ashok",
                    LastName = "Kumar"
                };
                context.Persons.Add(person);
            }

            //Get person record
            using (Context context = new Context())
            {
                var people = context.Persons;
                foreach (var person in people)
                {
                    Console.WriteLine(person.PersonId + "\t" + person.FirstName + "\t" + person.LastName);
                }
            }
            Console.Write("Press any key to continue...");
            Console.ReadKey();
        }
    }
}

您必须先从 Visual Studio 中的程序包管理器控制台执行 运行 Add-Migration <YourMigrationName> 命令(相当于在数据库优先方法中生成迁移脚本)。然后 运行 Update-Database 命令(相当于 运行 在数据库优先方法中使用迁移脚本)来应用迁移。

您可以参考this页面了解详细信息。

注意:从C#代码中删除不必要的代码以生成数据库。

我之前的代码中的小错误。

无需为此特定情况启用迁移。只需在正确的位置添加 context.SaveChanges() 命令,如下所示。

完整代码如下

        //Insert person record
        using (var context = new Context())
        {
            context.Database.CreateIfNotExists();
            Person person = new Person
            {
                FirstName = "Ashok",
                LastName = "Kumar"
            };
            context.Persons.Add(person);
            context.SaveChanges();
        }