998*_*823 3 c# asp.net entity-framework ef-code-first
我有一个非常奇怪的情况,特别是一个班级.将类添加到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.....
}
Run Code Online (Sandbox Code Playgroud)
将发票插入数据库的代码
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;
Run Code Online (Sandbox Code Playgroud)
补充说明
作为旁注,发票记录已成功插入数据库,但是,ID不会分配回发票对象.
另一个注意事项 - 我有大约30个其他代码的第一个类在插入和获取ID时工作得很好 - 只是这个因为一些奇怪的原因给了我一些问题.
按照jwatts1980建议书
我更新了发票类以反映这一点
[Key]
[Column("invoice_id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int InvoiceId { get; set; }
Run Code Online (Sandbox Code Playgroud)
这并没有立即解决问题,但它确实在插入时显示了一个新错误:
ReferentialConstraint中的依赖属性映射到存储生成的列.栏目:'invoice_id'
我在这里找到了stackoverflow的答案,这使我找到了我在发票类上设置的一些外键属性:
[ForeignKey("InvoiceId")]
public ICollection<InvoiceOrder> InvoiceOrders { get; set; }
[ForeignKey("InvoiceId")]
public InvoiceCreditCardPayment InvoiceCreditCardPayment { get; set; }
Run Code Online (Sandbox Code Playgroud)
ForeignKey到目前为止,删除上面的属性似乎解决了这个问题.我不能说它不会导致其他错误,但到目前为止一切似乎都运行良好.
此属性可能有所帮助
[Key]
[Column("invoice_id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int InvoiceId { get; set; }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4255 次 |
| 最近记录: |