Я использую 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
}
ОБНОВЛЕНИЕ:
Это происходит в одном из моих объектов, и другие работают нормально,Кстати, я проверил, и столбец БД - это идентификатор, а для StoreGeneratedPattern установлено значение Идентичность.Вот 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>
Обновление успешно выполнено в базе данных, и идентификатор создан, но объект сущности не обновлен с новым идентификатором.