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

时间:2018-06-27 12:46:48

标签: ef-code-first

编写了以下简单代码,以了解Entity Framework Code First方法。但是,我无法使其正常工作。

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

即使在调试代码时也无法确定问题。谁能建议我在哪里做错了!

下面是我的代码。

下面是Person类

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

下面是上下文类

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();
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您必须首先从Visual Studio的Package Manager控制台中运行Add-Migration <YourMigrationName>命令(等效于以DB first方法生成迁移脚本)。然后运行Update-Database命令(等效于在数据库中首先运行迁移脚本)来应用迁移。

您可以参考this页以获取详细信息。

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

答案 1 :(得分:0)

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

无需为此特定情况启用迁移。只需在正确的位置添加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();
        }