2 回答
TA贡献1752条经验 获得超4个赞
只需添加到@DevilSuichiro的原始注释中,您需要在实体的属性bundle_id上设置DatabaseGeneratedOption.None,如下所示。提供了完全限定的名称,因此您不必寻找名称空间:)
[Key]
[Column(Order = 0)]
[StringLength(255)]
[DatabaseGenerated(DatabaseGeneratedOption.None)] // Located here: System.ComponentModel.DataAnnotations.Schema
public string bundle_id { get; set; }
为什么?
默认情况下,默认情况下在Entity Framework中的主键列上设置DatabaseGeneratedOption.Identity。这表明数据库负责生成值。结果,由于期望SQL生成值,因此Entity Framework将从任何生成的SQL Insert语句中排除该列。
要查看实际效果,请使用
yourDbContext.Database.Log() = (query) => Debug.WriteLine(query);
在执行SaveChanges或运行SQL事件探查器以查看生成的SQL中的差异之前。
更新
为了清楚起见,当您使用Database.Log()=(query)=> Debug.WriteLine(query);时,结果将输出到Visual Studio的“诊断工具”窗口中。除非您先前关闭了窗口,否则在启动调试会话时默认情况下会启动该程序。
如果在调试时没有显示给您,则可以在这里找到:调试-> Windows->显示诊断工具。
下面是一个示例输出,所以你知道你在找什么:
- 2 回答
- 0 关注
- 129 浏览
添加回答
举报