Dans Entity Framework, obtenir la valeur d'une colonne d'identité après l'insertion

Je suis en utilisant EF4. Je veux insérer une nouvelle MyObject dans la base de données. Monobjet a deux champs:

Id: int (Identité) et
Nom: chaîne de

Comme je l'ai vu dans la documentation Entity Framework est supposée être MyObject.Id de la valeur générée par la base de données après l'appel à SaveChanges() mais dans mon cas, cela n'arrive pas.

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
}

Mise à JOUR:

Ce qui se passe dans l'un de mes entités et d'autres fonctionnent très bien. En passant, j'ai vérifié et la base de données de la colonne est de l'identité et de la StoreGeneratedPattern est définie à l'Identité.
Voici le SSDL. Je ne vois pas la différence. Le premier n'est pas de travailler à droite:

    <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>

La mise à jour se fait avec succès dans la base de données et l'identité est générée, mais l'entité objet n'est pas mis à jour avec la nouvelle identité.

source d'informationauteur nima | 2011-06-10