Asp.net mvc 4 首先使用实体框架代码保存数据
我使用的是ASP.NET MVC Razor实体框架代码第一个C 甲级Asp.net mvc 4 首先使用实体框架代码保存数据,asp.net-mvc-4,c#-4.0,entity-framework-6,Asp.net Mvc 4,C# 4.0,Entity Framework 6,我使用的是ASP.NET MVC Razor实体框架代码第一个C 甲级 public class Om_Category { [Key] public int CategoryID { get; set; } public String CategoryName { get; set; } public String CategorySanitized { get; set; } public Boolean IsActive { get; set; }
public class Om_Category
{
[Key]
public int CategoryID { get; set; }
public String CategoryName { get; set; }
public String CategorySanitized { get; set; }
public Boolean IsActive { get; set; }
public DateTime CreationDate { get; set; }
}
乙级
public class Om_CategorySkills
{
[Key]
public Int32 SkillID { get; set; }
public String Skill { get; set; }
public String SkillSanitized { get; set; }
public DateTime CreationDate { get; set; }
public Boolean IsActive { get; set; }
public Om_Category Category { get; set; }
}
当我尝试为表Om_CategorySkills创建记录时。上面说
无法在Om_类别表中保存重复值
发生这种情况是因为我正在发送Om_CategorySkills类对象中的Om_Category类对象,因为Om_Category类中有一些字段是必需的
因此,我也在Om_CategorySkills类对象中传递Om_Category类对象。有没有办法解决此问题?您的导航属性似乎不正确。。你能试试吗我没试过
public class Om_Category
{
[Key]
public int CategoryID { get; set; }
public String CategoryName { get; set; }
public String CategorySanitized { get; set; }
public Boolean IsActive { get; set; }
public DateTime CreationDate { get; set; }
public virtual Om_CategorySkills CategorySkills{ get; set; }
}
public class Om_CategorySkills
{
[Key]
public Int32 SkillID { get; set; }
public String Skill { get; set; }
public String SkillSanitized { get; set; }
public DateTime CreationDate { get; set; }
public Boolean IsActive { get; set; }
public int CategoryID {get;set;}
public virtual Om_Category Category { get; set; }
}
我发现您的Om_CategorySkills对象缺少一个Int32 Om_CategoryId属性,无法用作外键。我还将向导航属性类别添加一个虚拟修改器,以允许延迟加载
我认为可能是这样的情况,即您的新技能/编辑技能中的类别对象已在数据库中,但不是上下文检索到的对象,因此上下文认为您正在尝试使用现有类别的Id保存新类别
您不应尝试将技能对象与类别对象一起保存,而不进行任何更改。否则,类别对象应该是附加到上下文的对象。一个类别可以有多个技能,一个技能将有一个类别