Эта проблема также может исходить из свойства [NotMapped]
, которое имеет одно и то же имя в вашей модели БД и модели представления.
AutoMapper пытается выбрать его из БД во время проекции; и свойство NotMapped, очевидно, не существует в БД.
Решением является Ignore
свойство в конфигурации AutoMapper при сопоставлении из модели БД модели View.
[NotMapped]
с именем Foo
в вашей модели DB. Foo
в вашей модели просмотра. .ForMember(a => a.Foo, b => b.Ignore());
Нет, нет способа ссылаться на объект переменной контекста выполнения функции s> объекта привязки переменной среды объекта контекст выполнения (это то, что эта вещь называется [сейчас; отсюда зачеркивание]; подробности в §10.3 спецификации ). Вы можете получить доступ только к ограниченному представлению, которое вы получите с помощью arguments
(что действительно очень ограничено).
Обычно, когда я хотел сделать это, я просто помещал все, что хотел, на объект, а затем использовал это (например, передавал это в функцию). Конечно, любые функции, созданные в контексте, имеют доступ ко всему в области, в которой они созданы, поскольку они «закрывают» контекст; подробнее: Затворы не сложны .
Если вы хотите перенести область действия функции на любой объект, вы можете использовать библиотеку подчеркивания с _.bind
В вашем случае:
var fn = _.bind(function(){
console.log(this == window)
},window)
fn() // true
Я знаю, что это очень поздно, и вы, вероятно, даже немного больше не заинтересованы, но я также был заинтересован в возможности этого, и вы должны быть в состоянии обойти какую-то работу, используя:
(function(global) {
var testVar = 1;
global.scope = function(s) {
return eval(s);
}
})(this);
затем выполняется:
scope('testVar'); // 1
возвращает переменную из замыкания. Не особенно приятно, но теоретически возможно обернуть это в объект, возможно, используя некоторую проверку и методы получения и установки, если вам нужно?
Редактировать : Перечитав вопрос, я полагаю, вы Я хотел бы получить к нему доступ без указания функции в самой области, так что это, вероятно, не применимо. Я все равно оставлю это здесь.
Некоторые версии Netscape имели магическое свойство в объекте arguments
, который делал то, что вы искали. (Я не могу вспомнить, как это называлось)
Как насчет этого?
<script type="text/javascript">
var test = {
bar : 1,
foo : function () {
alert(this.bar);
}
}
test.foo();
</script>
Вам не нужно ключевое слово для ссылки на переменную в локальной области видимости, потому что это область, в которой вы находитесь .