我已经使用该选项从DB生成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)]
public string total_bks { get; set; }
[StringLength(255)]
public string delinquent_mortgage { get; set; }
[StringLength(255)]
public string delinquent_auto { get; set; }
[StringLength(255)]
public string high_credit_amount { get; set; }
[StringLength(255)]
public string min_age_on_file { get; set; }
[StringLength(255)]
public string min_fico { get; set; }
[Column(TypeName = "numeric")]
public decimal? CBCreditScoreFactors_Id { get; set; }
}
storage_tblCBMinCreditRequirement newt = InsertTable<storage_tblCBMinCreditRequirement>(new storage_tblCBMinCreditRequirement(), "/Loan/CoApplicant/CBCreditScoreFactors/CBMinCreditRequirement");
db.storage_tblCBMinCreditRequirement.Add(newt);
db.SaveChanges();//throws exception
感谢您的帮助,我很难过! :)现在,这是一首堆栈溢出的诗,因为想要更多的描述而荒谬。
堆栈溢出, 你应该知道, 该代码是模式, 在机器上显示我的愤怒。
我还能如何调试你?你想要我什么虚荣的话? 我的空话必须有用吗?你如何确定我的单词和代码的价值?代码不够吗?强迫诗歌对你是否正义,O&#39; Stack Overflow?
答案 0 :(得分:3)
为了添加@ 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 Insert 语句中排除该列,因为它期望SQL生成该值。
要查看此操作,请使用
yourDbContext.Database.Log() = (query) => Debug.WriteLine(query);
在执行SaveChanges或运行SQL事件探查器之前,查看生成的SQL中的差异。
<强>更新强>
为清楚起见,当您使用Database.Log()=(query)=&gt;的Debug.WriteLine(查询);结果将输出到Visual Studio的“诊断工具”窗口。当您启动调试会话时,默认情况下会启动此操作,除非您之前关闭了窗口。
如果在调试时没有显示它,可以在此处找到:Debug - &gt; Windows - &gt;显示诊断工具。
以下是一个示例输出,以便您知道您在寻找什么:
答案 1 :(得分:-1)
您可以在cshtml文件中尝试隐藏bundle_id
。