![](/img/trans.png)
[英]Entity Framework - foreign key property not changed after db.SaveChanges();
[英]Db.SaveChanges Not Assigning Primary Key ID After Insert - Code First Entity Framework
我有一个非常奇怪的情况,特别是一个班级。 将类添加到DbContext
以插入数据库并调用Db.SaveChanges
代码后,首先/ ef不会将主键ID分配回类。
这真的很奇怪,我以前从未遇到过这种情况,我似乎无法在网上找到任何解决方案。
这是代码目前的样子......
发票代码头等舱
[Table("invoice")]
public class Invoice
{
[Key]
[Column("invoice_id")]
public int InvoiceId { get; set; }
[Column("invoice_credit_card_payment_id")]
public int InvoiceCreditCardPaymentId { get; set; }
[Column("batch_id")]
public int BatchId { get; set; }
[Column("customer_id")]
public int CustomerId { get; set; }
etc.....
}
将发票插入数据库的代码
var invoice = new Invoice()
{
BatchId = 0,
Memo = "",
PayDateTime = DateTime.Now,
QuickbooksAccountName = "",
QuickbooksId = "",
Terms = "",
etc....
};
DbContext.Current.Invoices.Add(invoice);
//Invoice record does insert successfully!
DbContext.Current.SaveChanges();
//This returns ZERO
var id = invoice.InvoiceId;
补充说明
作为旁注,发票记录已成功插入数据库,但是,ID不会分配回发票对象。
另一个注意事项 - 我有大约30个其他代码的第一个类在插入和获取ID时工作得很好 - 只是这个因为一些奇怪的原因而给我带来问题。
按照jwatts1980建议书
我更新了发票类以反映这一点
[Key]
[Column("invoice_id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int InvoiceId { get; set; }
这并没有立即解决问题,但它确实在插入时显示了一个新错误:
ReferentialConstraint中的依赖属性映射到存储生成的列。 栏目:'invoice_id'
我在这里找到了stackoverflow的答案,这使我找到了我在发票类上设置的一些外键属性:
[ForeignKey("InvoiceId")]
public ICollection<InvoiceOrder> InvoiceOrders { get; set; }
[ForeignKey("InvoiceId")]
public InvoiceCreditCardPayment InvoiceCreditCardPayment { get; set; }
到目前为止,删除上面的ForeignKey
属性似乎解决了这个问题。 我不能说它不会导致其他错误,但到目前为止一切似乎都运行良好。
此属性可能有所帮助
[Key]
[Column("invoice_id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int InvoiceId { get; set; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.