операция обновления, показывающая ошибку в Entity Framework

1

Я пытаюсь обновить две таблицы, используя сущность 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();
        }

    }
Теги:
linq
entity-framework

1 ответ

1

v не является одним из ваших сущностей. Возможно, вы de.Entry(t).State виду 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();
    }
  • 0
    Я даже пытался de.Entry (t) .State, но он показывает "имя 't' не существует в текущем контексте".
  • 0
    @ user3409204: Это потому, что t был объявлен внутри вашего блока if , и вы пытались использовать его вне этого блока. Смотрите мое обновление.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню