我使用 RIA + Silverlight (可能是最新版本),Entity Framework。当我插入行时带代码
var context = new DataService();
var script = new Script { Id = Guid.NewGuid(), User = User.Id };
context.Scripts.Add(script);
context.SubmitChanges((o) =>
{
if (!o.HasError)
{} // OK, but has never gone here yet
else
{
o.MarkErrorAsHandled();
Messaging.MessageBox("some error" + o.Error.Message);
}
}, null);
...它抛出异常
无法将值NULL插入列'Id',表Scripts,列不允许空值。 INSERT失败。
当我尝试调试时,它进展顺利(服务),并且该实体(脚本)已设置'Id'为某个唯一值。看起来EntityFramework不会将“Id”发送到数据库。这是可能的 ? :)
“脚本”实体只有两列: - Id(Guid),User(int),还没有任何外键。
我是否错过了设置的东西?谢谢。
答案 0 :(得分:4)
您最初是否创建了没有Identity Specification列的表,然后将PK作为标识?如果需要,您需要刷新模型。
还要确保PK上有[Key]属性。
答案 1 :(得分:2)
好的,谢谢你的回答。如果我从数据库更新我的模型,它可能会工作。但我这样做了 - 从模型创建了数据库。
现在我知道,我必须将 StoredGeneratedPattern 从身份设置为**无**