Usuário com melhor resposta
Erro ao tentar salvar classe com dependencia

Pergunta
-
Olá, estou tendo um problema estranho.
Ao tentar salvar minha classe USUARIO, que depende de ter a classe EMPRESA e PESSOA salva dá o errro:
Unable to determine a valid ordering for dependent operations. Dependencies may exist due to foreign key constraints, model requirements, or store-generated values.
O estranho é que acontece somente quando a classe está assim:
public class Usuario { [Key] public int UsuarioID { get; set; } public int PessoaID { get; set; } [Required] [Display(Name = "Login")] public string Login { get; set; } [Required] [Display(Name = "Nome")] public string Nome { get; set; } [Display(Name = "Senha")] [StringLength(50)] [DataType(DataType.Password)] public string Senha { get; set; } public string Chave { get; set; } public Nullable<DateTime> DtAtivacao { get; set; } public string Gestor { get; set; } [Display(Name = "Tipo de liberação")] public string TipoLiberacao { get; set; } [Display(Name = "Tipo de cadastro")] public string TipoCadastro { get; set; } /* Campos fixos */ public int? EmpresaID { get; set; } public string Fixo { get; set; } public string Status { get; set; } public string Apagado { get; set; } public DateTime? DtApagado { get; set; } public int? UsuCad { get; set; } public DateTime DtCad { get; set; } public int? UsuAlt { get; set; } public DateTime DtAlt { get; set; } public int? UsuUltAlt { get; set; } public DateTime DtUltAlt { get; set; } [ForeignKey("UsuCad")] public virtual Usuario UsuarioCad { get; set; } [ForeignKey("UsuAlt")] public virtual Usuario UsuarioAlt { get; set; } [ForeignKey("UsuUltAlt")] public virtual Usuario UsuarioUltAlt { get; set; } [ForeignKey("EmpresaID")] public virtual Empresa Empresa { get; set; } }
E desta forma não dá erro:
public class Usuario { [Key] public int UsuarioID { get; set; } public int PessoaID { get; set; } [Required] [Display(Name = "Login")] public string Login { get; set; } [Required] [Display(Name = "Nome")] public string Nome { get; set; } [Display(Name = "Senha")] [StringLength(50)] [DataType(DataType.Password)] public string Senha { get; set; } public string Chave { get; set; } public Nullable<DateTime> DtAtivacao { get; set; } public string Gestor { get; set; } [Display(Name = "Tipo de liberação")] public string TipoLiberacao { get; set; } [Display(Name = "Tipo de cadastro")] public string TipoCadastro { get; set; } /* Campos fixos */ public int? EmpresaID { get; set; } public string Fixo { get; set; } public string Status { get; set; } public string Apagado { get; set; } public DateTime? DtApagado { get; set; } public int? UsuCad { get; set; } public DateTime DtCad { get; set; } public int? UsuAlt { get; set; } public DateTime DtAlt { get; set; } public int? UsuUltAlt { get; set; } public DateTime DtUltAlt { get; set; } }
E mais estranho é que tenho a estrutura como abaixo em outras classes e não dá pau...
[ForeignKey("UsuCad")] public virtual Usuario UsuarioCad { get; set; } [ForeignKey("UsuAlt")] public virtual Usuario UsuarioAlt { get; set; } [ForeignKey("UsuUltAlt")] public virtual Usuario UsuarioUltAlt { get; set; } [ForeignKey("EmpresaID")] public virtual Empresa Empresa { get; set; }
attMarlon Tiedt
www.sesmt.com.br
Respostas
-
Ontem estava fazendo um teste e descobri o problema.
Se usa-se usuário 1 como padrão para salvar os dados não dava erro.
Mas o EF usa 0 para dizer que não tem nada, e eu tinha cadastrado a EMPRESA, USUARIO e PESSOA padrão como código ZERO.
Alterei o cadastro padrão para 1, e tudo voltou a funcionar...
Valeus...
Marlon Tiedt
www.sesmt.com.br- Marcado como Resposta Marlon Tiedt quinta-feira, 29 de novembro de 2012 18:20
Todas as Respostas
-
-
Ontem estava fazendo um teste e descobri o problema.
Se usa-se usuário 1 como padrão para salvar os dados não dava erro.
Mas o EF usa 0 para dizer que não tem nada, e eu tinha cadastrado a EMPRESA, USUARIO e PESSOA padrão como código ZERO.
Alterei o cadastro padrão para 1, e tudo voltou a funcionar...
Valeus...
Marlon Tiedt
www.sesmt.com.br- Marcado como Resposta Marlon Tiedt quinta-feira, 29 de novembro de 2012 18:20