へのエンティティFramworkのメンバーを変更することはできません私は正常に動作私のアプリケーションでは、次のDbContextクラスを持っています。このアプローチはうまくいきますが、誰かが誤って私の基本コンテキストで顧客や連絡先に電話をかけることがあります。これは避けたいものです。が保護
私の理想的な解決策は、MyAppContextによってのみアクセスできるように、私のベースコンテキストのメンバーを保護することだと思っていましたが、データが2 DbSetにロードされていないので失敗します。例えば
public partial class BaseContext : DbContext
{
protected virtual DbSet<Customer> Customers { get; set; }
protected virtual DbSet<Contact> Contacts { get; set; }
}
私が保護にこれらを設定すると、彼らは公共everythigで結構です(これは私は避けたいこれら公にを公開)しているときに何もデータは、ロードされていません。
誰もこれに対処する方法について提案はありますか?
これはEFが内部的に動作する方法と関係があると思います。アクセス修飾子に違反する外部からプロパティを伝播しようとします。 – Toxantron
私はそれがオブジェクト上のプロパティで動作することを知っています。だから、 'DbSet'の' protected internal'を作るのはどうですか? – krillgar
これは疑似カプセル化です。コンシューマーは常にcontext.Set()にアクセスできます。また、ナビゲーションプロパティを使用して非アクティブな顧客を取得することはできません。ソフト削除には、より厳密なアプローチが必要です。 –