私は他の質問でこの問題をほのめかしましたが、それは私が言及した他のシナリオに実際には依存していないので、それを独自の質問に分割する価値があると思います。
とにかく-Qに、これが可能かどうかわからない。解決策/回避策を探しています。
私はクラスライブラリを持っていますが、POCOだけがあります。
MyCompany.MyProject.Domain.POCO
このアセンブリには、次のようなPOCOがあります。
public class Post
{
public int PostId { get; set; }
public int Name { get; set; }
...
}
今、私は別のクラスライブラリを持っています。それは私のDAL /リポジトリであり、永続性のためにEntityFramework4.0を使用しています。
MyCompany.MyProject.Repositories
このアセンブリは、POCOに対してCRUD操作を実行する必要があるため(DBオブジェクトを取得し、POCOにプロジェクトし、戻り、POCOを変更する)、POCOプロジェクトへの参照があります。
これで、POCOアセンブリとリポジトリアセンブリの両方への参照を持つWebアプリケーションもあります。
私がこれを行う場合:
somePOCO.PostId = 10;
PostIdはデータベースのIDENTITYフィールドであり、明示的に設定しないでください。SQLExceptionが発生します。
これらの特別なプロパティのセッターを非表示にして、リポジトリのみがセッターにアクセスできるようにする方法はありますか?
通常のアクセシビリティ修飾子を使用してそれを行う方法を考えることはできません(シナリオに適していないため)、回避策を考えていただけますか?