实体框架 - 同一个表的三个外键

时间:2015-07-30 15:51:37

标签: c# entity-framework

我有一张表“Projeto”,其中3张前进键位于同一张桌子“Usuario”。

当我尝试插入新的“Projeto”时,我收到错误:“IEntityChangeTracker的多个实例无法引用实体对象。”

这是我的插入/保存代码

    Usuario usuarioLogado = UsuarioService.GetById(ControlesDeAcesso.IdUsuarioLogado());

    Projeto projeto = new Projeto();
    projeto.Titulo = tbxTitulo.Text;
    projeto.TipoDeProjeto = tbxTipo.Text;
    projeto.Plataforma = PlataformaService.GetById(Convert.ToInt32(ddlPlataforma.SelectedValue));
    projeto.Descricao = tbxResumo.Text;
    projeto.SituacaoProjeto = SituacaoProjetoService.GetById(Convert.ToInt32(ddlSituacao.SelectedValue));
    projeto.DataInicio = tbxDataInicio.Text.ToNullableDateTime();
    projeto.Usuario = UsuarioService.GetById(Convert.ToInt32(ddlResponsavel.SelectedValue));
    projeto.Usuario2 = usuarioLogado;
    projeto.UltimaAtualizacao = DateTime.Now;
    projeto.Usuario1 = usuarioLogado;
    projeto.DataCriacao = DateTime.Now;

    ProjetoService.Insert(projeto);
    ProjetoService.Save();

这是我自动生成的课程

    public partial class Projeto
    {
        public Projeto()
        {
            this.AnexoProjeto = new HashSet<AnexoProjeto>();
            this.FinanceiroProjeto = new HashSet<FinanceiroProjeto>();
            this.TarefaProjeto = new HashSet<TarefaProjeto>();
        }

        public int Id { get; set; }
        public string Titulo { get; set; }
        public string TipoDeProjeto { get; set; }
        public int IdPlataforma { get; set; }
        public string Descricao { get; set; }
        public int IdSituacaoProjeto { get; set; }
        public Nullable<System.DateTime> DataInicio { get; set; }
        public Nullable<System.DateTime> DataTermino { get; set; }
        public int IdResponsavel { get; set; }
        public System.DateTime UltimaAtualizacao { get; set; }
        public int IdUsuarioAtualizacao { get; set; }
        public int Prioridade { get; set; }
        public System.DateTime DataCriacao { get; set; }
        public int IdUsuarioCriacao { get; set; }

        public virtual ICollection<AnexoProjeto> AnexoProjeto { get; set; }
        public virtual ICollection<FinanceiroProjeto> FinanceiroProjeto { get; set; }
        public virtual Plataforma Plataforma { get; set; }
        public virtual Usuario Usuario { get; set; }
        public virtual SituacaoProjeto SituacaoProjeto { get; set; }
        public virtual Usuario Usuario1 { get; set; }
        public virtual ICollection<TarefaProjeto> TarefaProjeto { get; set; }
        public virtual Usuario Usuario2 { get; set; }
    }

如果我可以在不编辑自动生成的代码的情况下解决这个问题,那就太好了。但无论如何我还需要解决。

0 个答案:

没有答案