public class Person
{
[Required]
public int? KupaId { get; set; }
[ForeignKey("KupaId")]
public Kupa Kupa { get; set; }
public int? newKupaId { get; set; }
[ForeignKey("newKupaId")]
public Kupa NewKupa { get; set; }
}
public class Kupa
{
public int Id { get; set; }
[Index("Ix_uniqueId", IsUnique = true)]
public int ? uniqueId { get; set; }
}
public class MyController:Controller
{
public Json EditKupa(Expression<Func<Person,bool>> criteria)
{
using (IKupotRepository<Person> _IPersonRepository = new SQlRepository<Person>())
{
Person personToEdit=_IPersonRepository.SingleOrDefault(criteria,GetIncludeProperties());
> //Getting the new kupa obj from db
newKupa = GetKupa(UniqueId);
<//changing the unique property to null
personToEdit.Kupa.ToremId = null;
personToEdit.Kupa.State = State.Modified;
personToEdit.NewKupa = newKupa;
>//Assign the unique id property the value that was in the first Kupa
personToEdit.NewKupa.ToremId = 1;
personToEdit.newKupaId = newKupa.Id;
personToEdit.NewKupa.State = State.Modified;
_IPersonRepository.SaveChanges();
}
}
當調用saveChanges()獲取異常:唯一鍵違規,當看着sql profiler我可以看到,EF 6生成一個更新查詢兩個Kupa對象,但它試圖更新在更新Kupa.uniqueId
之前NewKupa.uniqueId
?更新獨特的財產實體框架
你似乎沒有修改任何'Kupa'的'uniqueId'。 'personToEdit.Kupa.uniqueId'和'personToEdit.NewKupa.uniqueId'的價值是什麼?在這個過程中它們是如何改變的? –
起初:personToEdit.Kupa.uniqueId = 1比修改其值爲null,personToEdit.Kupa.uniqueId = null,比賦予newKupa personToEdit.NewKupa.uniqueId = 1。 –