У вас есть две разные переменные; greaterThan5
и greaterThanFive
.
У вас также есть оператор return
, который будет работать только внутри функции.
Я считаю, что вы ищете что-то вроде следующего, который передает value
в функцию, затем проверяет, больше ли value
больше пяти или нет, устанавливая переменную на true
внутри if
условно, если это так. Затем функция возвращает правдивость переменной greaterThan5
:
function greater(value) {
let greaterThan5 = false;
if (value > 5) {
greaterThan5 = true;
}
return greaterThan5;
}
console.log(greater(10));
console.log(greater(3));
, которая может быть упрощена до простой однострочной 1110] заявление:
function greater(value) {
return value > 5;
}
console.log(greater(10));
console.log(greater(3));
Ваш MS-DTC (Координатор распределенных транзакций) по какой-то причине работает неправильно. MS-DTC используется для координации результатов транзакций по нескольким разнородным ресурсам, включая несколько SQL-соединений.
Посмотрите эту ссылку для получения дополнительной информации о происходящем.
В основном если вы убедитесь, что ваш MS-DTC работает и работает должным образом, у вас не должно возникнуть проблем с использованием 2-х соединений ADO.NET - будь то соединения на основе сущностей или любой другой тип.
Вы можете избежать использования распределенной транзакции, управляя своим собственным EntityConnection и передавая это EntityConnection в ObjectContext. , В противном случае проверьте это.
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=580828&SiteID=1&mode=1 http://forums.microsoft.com/msdn/showpost.aspx? postid = 113669 & siteid = 1 & sb = 0 & d = 1 & at = 7 & ft = 11 & tf = 0 & pageid = 1
EntityConnection conn = new EntityConnection(ConnectionString);
using (TransactionScope ts = new TransactionScope())
{
using (DatabaseEntityModel o = new DatabaseEntityModel(conn))
{
var v = (from s in o.Advertiser select s).First();
v.AcceptableLength = 1;
}
//-> By commenting out this section, it works
using (DatabaseEntityModel o = new DatabaseEntityModel(conn))
{
//Exception on this next line
var v = (from s1 in o.Advertiser select s1).First();
v.AcceptableLength = 1;
}
//->
ts.Complete();
}
Проблема заключается в том, что два разных DataContext эффективно создают два разных соединения.
В этом случае транзакция должна быть преобразована в распределенную транзакцию. Я предполагаю, что ваша проблема связана с настройкой MS DTC (Microsoft Distributed Transaction Coordinator) на сервере и / или клиенте. Если сервер не настроен для разрешения удаленных подключений, например, для MSDTC, вы встретите такого рода исключения.
Вы можете обратиться к этой странице MS , например, для устранения проблем MSDTC, и Google заполнен до краев со статьями / вопросами о форуме.
Теперь, это может быть что-то еще, но это действительно звучит так, как будто это проблема MSDTC.
Я написал ответ на другой вопрос о том, как диагностировать сбой транзакций MSDTC.
Этот ответ может оказаться полезным.
Кстати, вы должны рассмотреть возможность использования SaveChanges (false) в сочетании с AcceptChanges () при использовании явных транзакций, подобных этой.
Таким образом, если что-то не работает в SaveChanges (false), ObjectContext не отменил ваши изменения, так что вы можете повторно применить позже или сделать некоторые записи об ошибках и т. Д.
См. Этот пост для получения дополнительной информации: http : //blogs.msdn.com/alexj/archive/2009/01/11/savechanges-false.aspx
Ура
Alex
Добавьте C: \ Windows \ msdtc.exe в исключения брандмауэра как на брандмауэре, так и на сервере. Я потратил целую вечность, пытаясь открыть определенные номера портов и диапазоны, но безрезультатно.
У меня действительно возникали похожие ошибки при использовании DTC при чтении сообщений из очереди MQ, их обработке и сохранении в базе данных SQL 2005 Express Edition. У меня недостаточно времени, чтобы до конца разобраться, была ли эта проблема вызвана выпуском 2005 г. или исключительно Express, но переход на стандарт 2008 г. привел к исчезновению этого конкретного поведения.