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(); を呼び出そうとしました。しかし、同じエラーが発生します。

ここで私が間違っていることはありますか?

## アップデート ##

なぜこれが起こっているのかがわかったと思います。問題は、ModifiedUser と CreatedUser を持つ他のすべてのクラスの基本クラスである BaseItem にあります。さて、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はnullですか?必須としてマークしたため、nullにすることはできません。

于 2013-02-03T22:43:51.833 に答える