猿问

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

我使用了从数据库生成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)]


http://img4.mukewang.com/60b1ddd60001203702410240.jpghttp://img.mukewang.com/60b1dddf0001f0bf02170242.jpg

http://img3.mukewang.com/60b1dde70001936804470187.jpg

错误

现在,这是一本关于堆栈溢出的诗,因为这太荒谬了,想要更多的描述。

您应该知道堆栈溢出,该代码就是在机器上显示我的怒气的模式。

我还要如何调试您?你想对我说些什么白话?我的闲话一定有用吗?您如何确定我的文字和代码的价值?代码不够吗?O'Stack Overflow,您会强迫诗歌吗?


Qyouu
浏览 130回答 2
2回答

温温酱

只需添加到@DevilSuichiro的原始注释中,您需要在实体的属性bundle_id上设置DatabaseGeneratedOption.None,如下所示。提供了完全限定的名称,因此您不必寻找名称空间:)[Key][Column(Order = 0)][StringLength(255)]   [DatabaseGenerated(DatabaseGeneratedOption.None)] // Located here: System.ComponentModel.DataAnnotations.Schemapublic 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->显示诊断工具。下面是一个示例输出,所以你知道你在找什么:

凤凰求蛊

您可以尝试隐藏bundle_id在您的 cshtml 文件中。
随时随地看视频慕课网APP
我要回答