c#从代码创建数据库

时间:2016-08-01 07:16:47

标签: c# sql sql-server

当我尝试从代码中添加人员详细信息时,我的程序不断崩溃,在此示例中为名称

看看我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new PersonContext())
            {
                // Create and save a new Person 
                Console.Write("Enter a name for a new Person Name: ");
                var name = Console.ReadLine();
                //Adding new person to the DB
                var person = new Person { Name = name };
                db.Persons.Add(person);
                db.SaveChanges();

                // Display all Blogs from the database 
                var query = from p in db.Persons
                            orderby p.Name
                            select p;

                Console.WriteLine("All persons in the database:");
                foreach (var item in query)
                {
                    Console.WriteLine(item.Name);
                }

                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }

        }
    }

    public class Person
    {
        public int NameId { get; set; }
        public string Name { get; set; }
        public virtual List<Person> Persons { get; set; }

    }



    public class PersonContext : DbContext
    {
        public DbSet<Person> Persons { get; set; }
    }
}

当它到达这一行时:

            db.Persons.Add(person);
它崩溃了,抱怨这个人没有身份证,但即使我给它直接身份证号码也无法解决问题。 看看调试我看到它得到ID 0所以我不确定这实际上是问题。 我从这里获取了示例代码https://msdn.microsoft.com/en-us/data/jj193542

根据自己的需要进行定制。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你在SQ​​L中创建表吗?如果没有,你可以在DBContext里面放这个:

        public DataContext() : base("Empirium")
    {
        // Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
        Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
    }

之后,检查功能Add,...