簡體   English   中英

插入后Db.SaveChanges未分配主鍵ID - 代碼優先實體框架

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM