更新操作显示实体框架中的错误

时间:2014-07-01 15:43:29

标签: c# linq entity-framework

我正在尝试使用实体框架更新两个表但显示错误:“实体类型<> f__AnonymousType3`4不是当前上下文模型的一部分”。

protected void Button3_Click(object sender, EventArgs e)
    {
        var obj = Convert.ToInt32(TextBox5.Text);
        var v = (from m in de.t1
                 join n in de.t2
                 on m.Id equals n.id
                 where m.Id == obj
                 select new { m.Name,m.Age,m.Address,n.salary}).FirstOrDefault();
        if (v != null)
        {
            t1 t = new t1
            {
                Name = TextBox1.Text,
                Age = Convert.ToInt32(TextBox2.Text),
                Address = TextBox3.Text,
                t2 = new t2
                {
                    salary = Convert.ToInt64(TextBox4.Text)
                }
            };
        de.Entry(v).State = System.Data.Entity.EntityState.Modified;
        de.SaveChanges();
        }

    }

1 个答案:

答案 0 :(得分:1)

v不是您的实体之一。您的意思是de.Entry(t).State吗?

通过利用强类型集合而不是为所有内容调用db.Entry(),您可以在将来避免此类错误:

    if (v != null)
    {
        t1 t = new t1
        {
            Name = TextBox1.Text,
            Age = Convert.ToInt32(TextBox2.Text),
            Address = TextBox3.Text,
            t2 = new t2
            {
                salary = Convert.ToInt64(TextBox4.Text)
            }
        };
        // de.Entry(t).State = System.Data.Entity.EntityState.Added;
        de.t1.Add(t);
        de.SaveChanges();
    }