调试模式下的ObjectContext public,发布模式下的内部

时间:2012-02-27 08:39:51

标签: c# .net entity-framework access-modifiers ef-model-first

是否有一种简单的方法可以在调试模式下将ObjectContext设置为public并在发布模式下设置内部?

使用Linqpad连接到ObjectContext进行快速测试和查询非常方便,因此出于开发目的,我希望它是公开的。但是,当为一些聪明的客户部署同样的便利时,我不想想到后果。

2 个答案:

答案 0 :(得分:2)

如评论中所述,这可能没有任何实际用途,但是:

#if DEBUG
public
#endif
class YourContext : ObjectContext
{
    ...
}

从.edmx文件处理生成的ObjectContext时,您需要自定义C#文件的生成方式。默认设置不可自定义,但设计人员有一个选项“添加代码生成项”。如果你使用它,你会得到几个选择。我正在使用“ADO.NET自我跟踪实体生成器”,但同样适用于所有这些。选择此项会将两个模板文件(Model.tt和Model.Context.tt)添加到项目中,您可以根据需要随意修改。对于您要求的修改,您会在<#=Accessibility.ForType(container)#> partial class文件中找到Model.Context.tt。您可以更新此内容,使其显示为

#if DEBUG
<#=Accessibility.ForType(container)#>
#endif
partial class

答案 1 :(得分:0)

Preprocessor directive

# if(DEBUG)
        public ObjectContext _context;
# else
        internal ObjectContext _context;
#endif