В Entity Framework, получение значения столбца идентификаторов после вставки

Я использую EF4. Я хочу вставить новый объект MyObject в базу данных. MyObject имеет два поля:

Id: int (Identity) и Name: string

Как я видел в документации, Entity Framework должна установить MyObject.Id равным значению, сгенерированному базой данных после вызова SaveChanges (), но в моем случае этого не происходит.

using (var context = new MyEntities())
{
    var myObject = MyObjects.CreateMyObject(0, "something"); // The first parameter is identity "Id"
    context.MyObjects.AddObject(myObject);
    context.SaveChanges();
    return myObject.Id; // The returned value is 0
}

ОБНОВЛЕНИЕ:

Это происходит в одной из моих сущностей, а другие работают нормально. Кстати, я проверил, что столбец DB - это идентификатор, а для StoreGeneratedPattern установлено значение Identity. Вот SSDL. Я не вижу разницы. Первый работает неправильно:

    <EntityType Name="OrgUnit">
      <Key>
        <PropertyRef Name="Srl" />
      </Key>
      <Property Name="Srl" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="TypeId" Type="smallint" Nullable="false" />
      <Property Name="Name" Type="varchar" Nullable="false" MaxLength="80" />      
    </EntityType>

    <EntityType Name="OrgType">
      <Key>
        <PropertyRef Name="Srl" />
      </Key>
      <Property Name="Srl" Type="smallint" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="Title" Type="varchar" Nullable="false" MaxLength="120" />
      <Property Name="Options" Type="int" Nullable="false" />
    </EntityType>

Обновление в базе данных выполнено успешно, и идентификатор создан, но объект-объект не обновлен с новым идентификатором.

10
задан nima 12 June 2011 в 06:30
поделиться