当我尝试从代码中添加人员详细信息时,我的程序不断崩溃,在此示例中为名称
看看我的代码
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
根据自己的需要进行定制。 有什么想法吗?
答案 0 :(得分:0)
你在SQL中创建表吗?如果没有,你可以在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,...