【问题标题】:Insertion fail when use entity framework inheritance使用实体框架继承时插入失败
【发布时间】:2011-07-08 16:53:23
【问题描述】:

我有两个表,一个名为 Person,它是抽象的,具有标量属性“Id”和“Name”,其中键“Id”是主键。另一个名为“Student”的继承自 Person

我使用以下代码将学生插入数据库:

    TestModeContainer testModel = new TestModeContainer();
    Student student = testModel.CreateObject<Student>();
    student.Id = "s1";
    student.Grade = "g2";
    student.Name = "Lighter.Spark";
    testModel.AddObject("PersonSet", s);

    testModel.SaveChanges();

当我调用 SaveChanges 将数据保存到数据库时,发生了 System.Data.UpdateException。内部异常显示“无法将值 NULL 插入 'Id' 列、表 'Temp.dbo.PersonSet';列不允许空值。INSERT 失败。\r\n语句已终止。” 谁能告诉我为什么?以及如何纠正这个问题?

【问题讨论】:

  • 您使用的是 EDMX 还是代码优先映射?
  • 如果您打开您的Person 实体,您在StoreGeneratedPatternId 字段的属性中看到什么值?
  • Id 字段的 StoreGeneratedPattern 值为“Identity”

标签: .net insert entity-framework-4.1 savechanges


【解决方案1】:

Id 字段的StoreGeneratedPattern 更改为NoneIdentity 表示将在数据库中设置值,因为应用程序中设置的值永远不会传递给数据库。

【讨论】:

  • 感谢您的回答!我现在明白其中的区别了。
猜你喜欢
  • 2011-05-19
  • 2010-10-07
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多