Общедоступный ObjectContext в режиме отладки, внутренний в режиме выпуска - PullRequest
1 голос
/ 27 февраля 2012

Есть ли простой способ сделать ObjectContext общедоступным в режиме отладки и внутренним в режиме выпуска?

С Linqpad очень удобно подключаться к ObjectContext для быстрого тестирования и запросов, поэтому в целях разработки я хочу, чтобы он был общедоступным. Но я не хочу думать о последствиях, когда такое же удобство будет применено к какому-нибудь умному клиенту.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Как упомянуто в комментарии, это может не иметь никакого практического применения, но:

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

При работе с сгенерированным ObjectContext из файла .edmx вам необходимо настроить способ создания файлов C #. Значение по умолчанию не настраивается, но в конструкторе есть опция «Добавить элемент генерации кода». Если вы используете это, вы получите несколько вариантов. Я использую «ADO.NET Self-Tracking Entity Generator», но одинаковый способ работает для всех них. Выбор этого добавляет два файла шаблона (Model.tt и Model.Context.tt) в ваш проект, который вы можете изменять по своему усмотрению. Для модификации, о которой вы спрашиваете, вы найдете <#=Accessibility.ForType(container)#> partial class в файле Model.Context.tt. Вы можете обновить это так, чтобы оно читало

#if DEBUG
<#=Accessibility.ForType(container)#>
#endif
partial class
0 голосов
/ 27 февраля 2012

Директива препроцессора ?

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