[英]C# MVC EF - Set a foreign key to NULL?
I am trying to set a foreign key to "Null".. Using the SQL Management Studio it works fine, but trying it using C#, I am getting a exception: 我正在尝试将外键设置为“ Null”。使用SQL Management Studio可以正常工作,但是使用C#尝试时,却遇到异常:
Exception: 例外:
Value cannot be null.
值不能为空。 Parameter name: entity.
参数名称:实体。
Code: 码:
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();
}
My both models look like that: (cut some pieces) 我的两个模型都像这样:(切了一些)
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; }
}
Can anyone help me out? 谁能帮我吗? How do I modify my model to be able to make my Foreign Keys nullable?
如何修改模型以使外键可以为空? Thanks in advance :)
提前致谢 :)
In your model the ID that is acting as your FK should be an int?
在您的模型中,充当FK的ID应该是
int?
to make it nullable. 使它可以为空。
Try: 尝试:
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();
}
As it looks like either abteilungObjekt or etageObjekt may be null when you try to assign them to the entity. 当您尝试将abteilungObjekt或etageObjekt分配给实体时,它看起来可能为null。 You should always perform a null check when using
FirstOrDefault()
on reference types. 在引用类型上使用
FirstOrDefault()
时,应始终执行空检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.