簡體   English   中英

實體框架:StoreGeneratedPattern =“Computed”屬性

[英]Entity framework: StoreGeneratedPattern=“Computed” property

我有一個DateTime屬性。 我需要此屬性的默認值為DateTime.Now 然后我發現你可以指定一個屬性StoreGeneratedPattern="Computed"並在SQL中將其設置為(getdate()) 這成功了。 但我無法在代碼中更改此屬性。 有時我需要將此屬性更改為任何DateTime值。 但是我的更改沒有保存。

將此屬性設置為Computed會告訴EF您無法直接設置該值。 你怎么能? 此屬性存在於計算列中,根據定義,列不會保存回數據庫。

不幸的是,EF的“默認值”屬性只能設置為編譯時已知的值,因此不能設置為DateTime.Now

此鏈接提供了一個不錯的解決方法:

將DateTime屬性的默認值設置為System.ComponentModel內的DateTime.Now默認值Attrbute


您還可以在上下文中處理SavingChanges事件,並在那里添加默認值,但這只會在您實際調用SaveChanges() ,而不是在創建對象時發生。

    partial void OnContextCreated() {
        this.SavingChanges += new EventHandler(AccrualTrackingEntities_SavingChanges);
    }

    void AccrualTrackingEntities_SavingChanges(object sender, EventArgs e) {
        List<Invoice> Invoices = this.ObjectStateManager
            .GetObjectStateEntries(System.Data.EntityState.Added | System.Data.EntityState.Modified)
            .Select(entry => entry.Entity)
            .OfType<Invoice>().ToList();

        foreach(Invoice I in Invoices)
            if (I.EntityState == System.Data.EntityState.Added) {
                //set default values
            } else {
                //??  whatever
            }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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