1

問題のあるベースウィンドウ用の汎用リポジトリを作成しました。より具体的に言えば、次のように Unit と呼ばれる小さな poco クラスがあります。

public class Unit : BaseEntity
    {
        public string Name { get; set; }

        private ICollection<Good> _goods;
        public virtual ICollection<Good> Goods
        {
            get
            {
                if(_goods==null)
                {
                    return new List<Good>();
                }
                return _goods;
            }
            set { _goods = value; }
        }
    }

これは、基本エンティティ クラスから次のように継承されます。

public class BaseEntity 
    {

        public int Id { get; set; }
        public override string ToString()
        {
            return Id.ToString();
        }

    }

これは、汎用リポジトリ クラスの Add セクションです。

 public void Add(TEntity entity)
        {
            if (entity == null) return;
            if (Context.Entry(entity).State == EntityState.Detached)
            {
                Context.Set<TEntity>().Attach(entity);
            }
            Context.Set<TEntity>().Add(entity);
            Context.SaveChanges();

        }

新しいレコードを追加する前に、max id を db から取得して IdTextBox に配置し、前述のベース リポジトリの Add メソッドを呼び出すベース フォームの add メソッドを呼び出します。ここに問題があります。「プロパティ 'Id' はオブジェクトのキー情報の一部であり、変更できません。」というエラーが表示されます。すべてのプロパティを対応するコントロールにマップするマッパー クラスもあります。私の問題は何ですか?

前もって感謝します。

4

1 に答える 1

0

この問題は、変更の自動検出が有効であることが原因で発生していることがわかりました。

于 2011-09-04T08:36:22.070 に答える