簡體   English   中英

如何將空值設置為實體框架上的現有屬性

[英]How to set null value to an existing attribute on Entity Framework

設想:
我有一個帶有(可為空的)FK Id的實體,不再需要它。

問題:
當我在上下文中更新此實體時,將NULL設置為 FK,在SaveChanges()之后,該值不會保留在數據庫上。

有任何想法嗎?

編輯#1:
SaveChanges ,我檢查了基數並繼續使用舊值,如果我更改為其他值工作正常。

班級:

public class Account
{
    [Required]
    public int Id { get; set; }

    public int? PlanId { get; set; }

    [Required]
    public virtual Status Status { get; set; }

    #region Navigations Properties

    public virtual Plan Plan { get; set; }

    #endregion
}

用法:(問題)

Account ent = Context.Set<Account>().AsQueryable().FirstOrDefault(x => x.Id = id);
ent.PlanId = null;
Context.SaveChanges();

編輯 [問題已解決]

有必要發送一個數組,其中的字段將作為新值獲得 null。

public virtual void Update(TEntity entityToUpdate, List<string> updateNullFields)
{
    DbSet.Attach(entityToUpdate);
    foreach (var item in updateNullFields)
    {
        Context.Entry(entityToUpdate).Property(item).IsModified = true;
    }
}

我會說你很可能沒有更新數據庫本身。 使用以下代碼更新數據庫后:

ALTER TABLE [table_name] ALTER COLUMN [fk_column] [datatype] NULL

在 .edmx 文件上運行“從數據庫更新模型”。 在此處輸入圖片說明

確保此 Nullable = true 在此處輸入圖片說明

暫無
暫無

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

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