問題のあるベースウィンドウ用の汎用リポジトリを作成しました。より具体的に言えば、次のように 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' はオブジェクトのキー情報の一部であり、変更できません。」というエラーが表示されます。すべてのプロパティを対応するコントロールにマップするマッパー クラスもあります。私の問題は何ですか?
前もって感謝します。