簡體   English   中英

C#MVC EF-將外鍵設置為NULL?

[英]C# MVC EF - Set a foreign key to NULL?

我正在嘗試將外鍵設置為“ Null”。使用SQL Management Studio可以正常工作,但是使用C#嘗試時,卻遇到異常:

例外:

值不能為空。 參數名稱:實體。

碼:

    var entity = _db.AlleBenutzer.FirstOrDefault(p => p.Id == id);
    if (entity != null)
    {
        var abteilungObjekt = _db.AlleAbteilungen.FirstOrDefault(p => p.Abteilungsname == abteilung);
        var etageObjekt = _db.AlleEtagen.Include(p => p.Abteilung).FirstOrDefault(p => p.Etagenname == etage);
        entity.Abteilung = abteilungObjekt;
        entity.Etage = etageObjekt;
        _db.Entry(entity.Abteilung).State = EntityState.Modified;
        _db.Entry(entity.Etage).State = EntityState.Modified;
        _db.Entry(entity).State = EntityState.Modified;
        _db.SaveChanges();
    }

我的兩個模型都像這樣:(切了一些)

public class Benutzer
{
    public int Id { get; set; }
    public Abteilung Abteilung { get; set; }
    public Etage Etage { get; set; }
}

public class Abteilung
{
    public int Id { get; set; }
    public string Abteilungsname { get; set; }
}

誰能幫我嗎? 如何修改模型以使外鍵可以為空? 提前致謝 :)

在您的模型中,充當FK的ID應該是int? 使它可以為空。

嘗試:

var entity = _db.AlleBenutzer.FirstOrDefault(p => p.Id == id);
    if (entity != null)
    {
        var abteilungObjekt = _db.AlleAbteilungen.FirstOrDefault(p => p.Abteilungsname == abteilung);
        if (abteilungObjekt != null)
        {
            entity.Abteilung = abteilungObjekt;
            _db.Entry(entity.Abteilung).State = EntityState.Modified;
        }

        var etageObjekt = _db.AlleEtagen.Include(p => p.Abteilung).FirstOrDefault(p => p.Etagenname == etage);
        if (etageObjekt != null)
        {        
            entity.Etage = etageObjekt;
            _db.Entry(entity.Etage).State = EntityState.Modified;
        }

        _db.Entry(entity).State = EntityState.Modified;
        _db.SaveChanges();
    }

當您嘗試將abteilungObjekt或etageObjekt分配給實體時,它看起來可能為null。 在引用類型上使用FirstOrDefault()時,應始終執行空檢查。

暫無
暫無

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

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