Невозможно установить идентификатор экземпляра

Что уникально в моей ситуации, так это то, что идентификаторы не могут быть назначены случайным образом, поэтому я устанавливаю их значение в экземпляре. Я создал несколько экземпляров объекта с помощью средства моделирования. Ниже создан XML:

  <cf:entity name="Test4" namespace="Amikids.TimeTracking" categoryPath="/Amikids.TimeTracking">
    <cf:property name="Id" key="true" typeName="int" />
    <cf:property name="Name" />
    <cf:instance>
      <cf:instanceValue name="Id">10</cf:instanceValue>
      <cf:instanceValue name="Name">Test 1</cf:instanceValue>
    </cf:instance>
    <cf:instance>
      <cf:instanceValue name="Id">20</cf:instanceValue>
      <cf:instanceValue name="Name">Test 2</cf:instanceValue>
    </cf:instance>
    <cf:instance>
      <cf:instanceValue name="Id">30</cf:instanceValue>
      <cf:instanceValue name="Name">Test 3</cf:instanceValue>
    </cf:instance>
  </cf:entity>

Есть 2 вещи, которые не работают должным образом:

  1. Вставленные записи не используют идентификатор, указанный в файле model/xml. Вместо этого они создавались постепенно, начиная с 1:

(Ниже показано во фрагменте кода только для того, чтобы StackOverflow не переформатировал мой список, чтобы все записи отображались в одной строке)

ID Name
1  Test 1
2  Test 2
3  Test 3

  1. Когда я создаю модель во второй раз, вставляются повторяющиеся записи.

(Ниже показано во фрагменте кода только для того, чтобы StackOverflow не переформатировал мой список, чтобы все записи отображались в одной строке)

    ID Name
    1  Test 1
    2  Test 2
    3  Test 3
    4  Test 1
    5  Test 2
    6  Test 3


person Dave    schedule 08.12.2016    source источник
comment
Свойство Id преобразуется в столбец идентификаторов в базе данных. Таким образом, вы не можете установить значение столбца Id явно. Чтобы иметь возможность установить значение столбца Id, вы должны установить persistenceIdentity="false" в модели.   -  person meziantou    schedule 08.12.2016


Ответы (1)


Хотя указание идентификатора в экземпляре не работает, в качестве простого обходного пути я создал записи с помощью кода, который позволил мне указать идентификатор. Это было проверено с помощью следующего фрагмента кода.

         Amikids.TimeTracking.Test4 test4  = new Amikids.TimeTracking.Test4();
         test4.Id = 100;
         test4.Name = "Test 100";
         test4.Save();

         test4 = new Amikids.TimeTracking.Test4();
         test4.Id = 200;
         test4.Name = "Test 200";
         test4.Save();
person Dave    schedule 08.12.2016