为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能在Entity Framework表中插入行?

为什么我不能在Entity Framework表中插入行?

C#
Qyouu 2021-05-14 18:31:35
我使用了从数据库生成EF代码的选项。当我尝试插入时,即使我插入的内容具有bundle_id,也会出现错误消息“ bundle_id”是必需的。这是我的代码[Table("[storage.tblCBMinCreditRequirement]")]public partial class storage_tblCBMinCreditRequirement{    [Key]    [Column(Order = 0)]    [StringLength(255)]    public string bundle_id { get; set; }    [Key]    [Column(Order = 1)]    [StringLength(255)]    public string deal_detail_id { get; set; }    [StringLength(10)]    public string version_code { get; set; }    [StringLength(255)]    public string applicant_id { get; set; }    [StringLength(255)]    public string score { get; set; }    [StringLength(255)]    public string thin_no_hit { get; set; }    [StringLength(255)]    public string thin_no_hit_proxy { get; set; }    [StringLength(255)]    public string thin_file { get; set; }    [StringLength(255)]    public string thin_file_no_hit { get; set; }    [StringLength(255)]    public string limited_credit_flag { get; set; }    [StringLength(255)]    public string limited_credit_empl { get; set; }    [StringLength(255)]    public string limited_credit_sat_auto { get; set; }    [StringLength(255)]    public string qualified_trades { get; set; }    [StringLength(255)]    public string sat_auto_mortgage_trade { get; set; }    [StringLength(255)]    public string min_num_sat_auto_trade { get; set; }    [StringLength(255)]错误现在,这是一本关于堆栈溢出的诗,因为这太荒谬了,想要更多的描述。您应该知道堆栈溢出,该代码就是在机器上显示我的怒气的模式。我还要如何调试您?你想对我说些什么白话?我的闲话一定有用吗?您如何确定我的文字和代码的价值?代码不够吗?O'Stack Overflow,您会强迫诗歌吗?
查看完整描述

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->显示诊断工具。


下面是一个示例输出,所以你知道你在找什么:

//img1.sycdn.imooc.com//60b1de0900017e1806390099.jpg

查看完整回答
反对 回复 2021-05-29
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以尝试隐藏bundle_id在您的 cshtml 文件中。


查看完整回答
反对 回复 2021-05-29
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信