我有一个具有共同属性的基础对象:
public abstract class BaseItem
{
[Required]
public User ModifiedUser { get; set; }
[Required]
public User CreatedUser { get; set; }
}
所有其他对象都是从上面继承的,但是当我尝试使用SaveContext进行保存时,它不能用于错误: ModifiedUser - ModifiedUser字段是必需的。 CreatedUser - CreatedUser字段是必需的。
类别对象:
public class Category : BaseItem, INotifyPropertyChanged
{
public int CategoryId { get; set; }
public string Name { get; set; }
...
}
保存类别的方法:
public List<Category> SaveCategories(Category[] categories)
{
try
{
using (EntityContext context = new EntityContext())
{
context.Category.AddOrUpdate(categories);
context.SaveChanges();
}
...
}
catch (DbEntityValidationException e)
{
...
}
}
我使用了AddOrUpdate(),但我也尝试先从数据库中获取一个类别,然后调用context.SaveChanges();但是我得到了同样的错误。
我在这里做错了什么想法?
我想我发现了为什么会这样。问题在于BaseItem,它是我拥有ModifiedUser和CreatedUser的所有其他类的基类。好吧,我还有一个继承自baseitem的User类。所以现在我面临着BaseItem和User之间的循环依赖。 或者在这种情况下,由于User继承自BaseItem,我们对自引用对象有一个循环依赖。
public class User : BaseItem
{
public int UserId { get; set; }
[Required]
public string UserName { get; set; }
}
我尝试将ModifiedUser和CreatedUser设为虚拟,但我有WCF,它不会序列化。
答案 0 :(得分:0)
在类别数组中的每个类别对象上,ModifiedUser和CreatedUser是否为null?它们不能为空,因为您将它们标记为必需。