У нас есть приложение MVC, которое создает модели сущностей и сохраняет их в сеансе. Позже мы хотим зафиксировать это в базе данных. Просто пытаюсь сделать
db.Attendees.AddObject(attendee);
выдает ошибку
The EntityKey property can only be set when the current value of the property is null.
Ключ сущности - это простой тип long и столбец идентификаторов в базе данных. Чего нам не хватает? Это кажется таким простым делом? Чтобы заставить вещи работать, нам пришлось создать копию объекта и затем сохранить копию. Разве вы не можете поместить модели инфраструктуры сущностей в сессию, вывести их обратно, а затем сохранить их?
Вот описание Attendee в модели Entity Framework ... оно попадает в БД SQL Server 2008
[EdmEntityTypeAttribute(NamespaceName="Model", Name="Attendee")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Attendee : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new Attendee object.
/// </summary>
/// <param name="attendeeID">Initial value of the AttendeeID property.</param>
/// <param name="firstName">Initial value of the FirstName property.</param>
/// <param name="lastName">Initial value of the LastName property.</param>
/// <param name="email">Initial value of the Email property.</param>
/// <param name="createdBy">Initial value of the CreatedBy property.</param>
/// <param name="createdOn">Initial value of the CreatedOn property.</param>
/// <param name="modifiedBy">Initial value of the ModifiedBy property.</param>
/// <param name="modifiedOn">Initial value of the ModifiedOn property.</param>
public static Attendee CreateAttendee(global::System.Int64 attendeeID, global::System.String firstName, global::System.String lastName, global::System.String email, global::System.String createdBy, global::System.DateTime createdOn, global::System.String modifiedBy, global::System.DateTime modifiedOn)
{
Attendee attendee = new Attendee();
attendee.AttendeeID = attendeeID;
attendee.FirstName = firstName;
attendee.LastName = lastName;
attendee.Email = email;
attendee.CreatedBy = createdBy;
attendee.CreatedOn = createdOn;
attendee.ModifiedBy = modifiedBy;
attendee.ModifiedOn = modifiedOn;
return attendee;
}
#endregion
#region Primitive Properties
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int64 AttendeeID
{
get
{
return _AttendeeID;
}
set
{
if (_AttendeeID != value)
{
OnAttendeeIDChanging(value);
ReportPropertyChanging("AttendeeID");
_AttendeeID = StructuralObject.SetValidValue(value);
ReportPropertyChanged("AttendeeID");
OnAttendeeIDChanged();
}
}
}
private global::System.Int64 _AttendeeID;
partial void OnAttendeeIDChanging(global::System.Int64 value);
partial void OnAttendeeIDChanged();