ObjectContextをデバッグモードでパブリックにし、リリースモードで内部にする簡単な方法はありますか?
Linqpadを使用すると、ObjectContextに接続してすばやくテストしたりクエリを実行したりするのに非常に便利なので、開発目的で公開する必要があります。しかし、同じ便利さが一部の賢い顧客に展開された場合の結果については考えたくありません。
ObjectContextをデバッグモードでパブリックにし、リリースモードで内部にする簡単な方法はありますか?
Linqpadを使用すると、ObjectContextに接続してすばやくテストしたりクエリを実行したりするのに非常に便利なので、開発目的で公開する必要があります。しかし、同じ便利さが一部の賢い顧客に展開された場合の結果については考えたくありません。
コメントで述べたように、これは実用的ではないかもしれませんが、:
#if DEBUG
public
#endif
class YourContext : ObjectContext
{
...
}
.edmxファイルから生成さObjectContext
れたものを処理する場合は、C#ファイルの生成方法をカスタマイズする必要があります。デフォルトはカスタマイズできませんが、デザイナーには「コード生成アイテムの追加」オプションがあります。これを使用すると、いくつかのオプションが表示されます。「ADO.NETSelf-TrackingEntityGenerator」を使用していますが、すべて同じ方法で機能します。これを選択すると、2つのテンプレートファイル(Model.ttとModel.Context.tt)がプロジェクトに追加され、必要に応じて自由に変更できます。あなたが求めている変更については<#=Accessibility.ForType(container)#> partial class
、Model.Context.tt
ファイルにあります。これを更新して、次のようにすることができます
#if DEBUG
<#=Accessibility.ForType(container)#>
#endif
partial class
# if(DEBUG)
public ObjectContext _context;
# else
internal ObjectContext _context;
#endif