我有一个具有共同属性的基础对象:
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,它不会序列化。