2013-08-01 8 views
3

EDIT для людей, которые наткнулись на этот вопрос в будущем.Поддержание порядка вставки с помощью Breeze

Это не легкий вопрос, это вопрос EF, и его много раз спрашивали. Как here и here.

Я использую Бриз с нокаутом. Я создаю сущности и подталкиваю их к массиву, и при сохранении изменений на сервере данные заканчиваются в другом порядке, чем то, как оно было нажато на клиенте. Я использую Web API и Entity Framework.

код

Javascript выглядит следующим образом:

var owner = manager.createEntity('OwnerInformation'); 
licApp().owners.push(owner); 

Перед SaveChanges называется массив выглядит следующим образом:

enter image description here

Когда SaveChanges называется saveBundle выглядит следующим образом (ommiting много другой информации для краткости)

{"entities": [ 
    { 
    "Id": 2008, 

    { 
    "Id": -3, 
    "LicensingApplicationId": 2008, 
    "FirstName": "First", 
    "LastName": "Owner", 
    }, 
    { 
    "Id": -4, 
    "LicensingApplicationId": 2008, 
    "FirstName": "Second", 
    "LastName": "Owner", 
    } 
]} 

а после сохранения в базе данных в результате это (первый столбец идентификатор):

enter image description here

Почему они вставляются в обратном направлении?

+0

У меня была аналогичная проблема раньше, и я не видел ее с тех пор - я думал и мог ошибаться, что это связано с тем, как я устанавливал свойство навигации (звучит сумасшедшим), но вы пробовали владельца () .licApp (licApp()) вместо добавления владельца в licApp? –

+0

@PWKad все тот же результат! –

ответ

3

У меня есть вопрос более высокого порядка. Какое тебе дело? Вы используете реляционную базу данных. Заказ не определен. Если вы заботитесь о заказе, ваши данные должны иметь что-то, чтобы заказатьBy.

Я не пытаюсь быть забавным. Я честно полагаю, что ожидание сохранения порядка обусловливает вас неудачей. Убеди меня в другом. Я готов учиться.

p.s .: Я не думаю, что Бриз имеет к этому какое-либо отношение ... на клиенте или сервере. Готов поспорить, вы используете EF. Я никогда не мог предсказать порядок сохранения EF ... и я не потрудился попробовать, учитывая принципы.

+0

Уорд, я использую EF. Порядок важен, так как в этом случае первый элемент является основным. Я вижу вашу точку на orderby, но я ожидаю, что это будет вести себя одинаково, если я вставил записи непосредственно в базу данных с помощью вставных операторов. Таблица SQL Server с идентификационным ключом (и никакими другими индексами) автоматически сортируется по идентификатору. Но если проблема лежит на EF, я думаю, что ничего не может быть сделано с точки зрения Бриз. –

+0

Фактически, запрос фактически возвращается в Id-порядке, когда нет предложения OrderBy. К сожалению для вас, то есть после того, как он вставил их в db «назад» с вашей точки зрения. Вы решили позволить EF вставить и позволить БД генерировать ваши ключи. На данный момент у меня нет отличного ответа. Никогда не иметь. – Ward

+0

Вы знаете, что можете назвать мой блеф и посмотреть, можете ли вы заставить EF уважать порядок, в котором вы добавляете их в свой DbContext. Если вы можете сделать EF вставить их в определенном порядке (помните, что временные клавиши отрицательные), то я снова посмотрю, есть ли что-то, что мы можем сделать.Но я не думаю, что вы можете контролировать порядок вставки EF вообще – Ward

Смежные вопросы