0

我有一个具有共同属性的基础对象:

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,它不会序列化。

4

1 回答 1

0

类别数组中的每个类别对象上的 ModifiedUser 和 CreatedUser 是否为空?它们不能为空,因为您将它们标记为必需。

于 2013-02-03T22:43:51.833 回答