我試圖解決EF問題來更新我的實體的集合:更新現有EntityCollection
[TestMethod]
public void DeveEditarUsuarioNoRepositorio()
{
Usuario usuario = _usuarioRepository.GetById(1);
usuario.Nome = "Samla Peidorreira";
usuario.Email = "[email protected]";
usuario.DataNascimento = new DateTime(1988, 11, 19, 4, 23, 54, 0);
usuario.Sexo = (Sexo)Convert.ToByte(Sexo.Masculino);
usuario.Telefone = null;
usuario.Credencial.Status = (Status)Convert.ToByte(Status.Ativo);
//That's the collection I want to update
usuario.Credencial.Perfis = new List<Perfil>() { new Perfil() { Nome = "Fotografos", DataEdicao = new DateTime(1996, 2, 1, 12, 15, 42, 27), Deletado = true, Status = false, Tipo = 3 } };
usuario.Credencial.NomeUsuario = "samlapeidanascalca";
usuario.Credencial.Senha = "samlacagona";
_usuarioRepository.Edit(usuario);
_context.SaveChanges();
Usuario usuarioEditado = _usuarioRepository.GetById(1);
Assert.AreEqual("Samla Peidorreira", usuarioEditado.Nome);
Assert.AreEqual("[email protected]", usuarioEditado.Email);
Assert.AreEqual(new DateTime(1988, 11, 19, 4, 23, 54, 0), usuarioEditado.DataNascimento);
Assert.AreEqual(Sexo.Masculino, usuarioEditado.Sexo);
Assert.AreEqual(null, usuarioEditado.Telefone);
Assert.AreEqual(Status.Ativo, usuarioEditado.Credencial.Status);
Assert.AreEqual(1, usuarioEditado.Credencial.Perfis.Count);
Assert.AreEqual(5, usuarioEditado.Credencial.Perfis[0].Id);
Assert.AreEqual("samlapeidanascalca", usuarioEditado.Credencial.NomeUsuario);
Assert.AreEqual("samlacagona", usuarioEditado.Credencial.Senha);
}
發生什麼事是,當我設置Perfis
地產新列表,它不能代替屬性中的值,它將該新列表的值添加到該屬性的實際列表中。 WTF爲什麼會發生這種情況?
我做些什麼來解決,這是在我的實體這樣做:在我集合{} IN Perfis
物業
public class Credencial : Entity
{
private IList<Perfil> _perfis;
public Credencial()
{
Status = Status.Inativo;
}
public virtual Usuario Usuario { get; set; }
public virtual IList<Perfil> Perfis
{
get { return _perfis ?? (_perfis = new List<Perfil>()); }
set { Perfis.Clear(); _perfis = value; }
}
public virtual Status Status { get; set; }
public byte StatusId
{
get { return (byte)Status; }
set { Status = (Status)value; }
}
public string NomeUsuario { get; set; }
public string Senha { get; set; }
}
LOOK。這樣做,即使我想設置Perfis
屬性,它將清除列表並添加新Itens的新列表。
我做錯了什麼?沒有人談論這個解決方案。
你的問題的要點是什麼?清算清單將如何幫助解決您的問題? –
@Ladislav在我發送一個新對象之前,它只添加這個對象的項目。現在它清除列表並添加。 –
它應該怎麼做?它完全按照你的指示去做。 –