更新模型时遇到一些问题。这是我的更新代码:
public void Update(Class @class)
{
var updatedClass = context.Classes.Where(c => c.ClassId == @class.ClassId).FirstOrDefault();
updatedClass.ClassPriceTypeId = @class.ClassPriceTypeId;
updatedClass.ClassType = @class.ClassType;
updatedClass.Name = @class.Name;
updatedClass.Title = @class.Title;
updatedClass.MetaTag = @class.MetaTag;
updatedClass.MetaDescription = @class.MetaDescription;
updatedClass.UrlSafe = @class.UrlSafe;
updatedClass.Header = @class.Header;
updatedClass.Margin = @class.Margin;
updatedClass.ImageName = @class.ImageName;
updatedClass.GroupId = @class.GroupId;
updatedClass.IsPublished = @class.IsPublished;
context.SaveChanges();
}
第一个问题是我创建了LazyLoadingEnabled=false
但是在获取updatedClass
后,Group
之类的关系属性不为空。
第二个问题是,在某些@class
个对象中,我可以轻松更新我的实体,但在其他一些对象中,我看到了这个错误:
操作失败:无法更改关系,因为 一个或多个外键属性是不可为空的。当一个 改变了关系,相关的外键属性是 设置为空值。如果外键不支持空值, 必须定义新的关系,外键属性必须是 分配了另一个非空值,或者不相关的对象必须是 删除。
更新
这是Class
型号:
public class Class
{
public int ClassId { get; set; }
public int GroupId { get; set; }
public int ClassPriceTypeId { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string MetaTag { get; set; }
public string MetaDescription { get; set; }
public string UrlSafe { get; set; }
public string Header { get; set; }
public string ImageName { get; set; }
public int Margin { get; set; }
public string ClassType { get; set; }
public bool IsPublished { get; set; }
public virtual Group Group { get; set; }
public virtual List<Product> Products { get; set; }
public virtual List<Comparing.Model.Price.Price > Prices { get; set; }
public virtual ClassPriceType.ClassPriceType ClassPriceType { get; set; }
public virtual List<Garanty> Garanties { get; set; }
public virtual List<PhoneModel> PhoneModels { get; set; }
public virtual List<ClassPartner> ClassPartners { get; set; }
public virtual List<Content> Contents { get; set; }
}
这是Group
型号:
public class Group
{
public int GroupId { get; set; }
public int SectionId { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string MetaTag { get; set; }
public string MetaDescription { get; set; }
public string UrlSafe { get; set; }
public string Header { get; set; }
public string ImageName { get; set; }
public bool IsPublished { get; set; }
public virtual Section Section { get; set; }
public virtual List<Class> Classes { get; set; }
}
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
我想,您正在尝试更新主键字段,该字段与其他外键具有非空约束关系。我想你需要使用更新级联。