2015-05-30 3 views
0

Я использую Linq в C# и asp.net для обновления полей данных с использованием метода SaveChanges();, но он не работает !!! Я не знаю почему?Linq to ADO Обновление данных не работает

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Default2 : System.Web.UI.Page 
{ 
private GitamarineEntities context = new GitamarineEntities(); 
protected void Page_Load(object sender, EventArgs e) 
{ 
    var ves = context.tblVessels.First(v => v.vID == 15); 
    txtNav.Text = ves.vNavEqpm; 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    var ves = context.tblVessels.Single(v => v.vID == 15); 
    ves.vNavEqpm = txtNav.Text.Trim(); 
    context.SaveChanges(); 
} 
} 

отредактированные и до сих пор не повезло

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    //GitamarineEntities1 contextShow = new GitamarineEntities1(); 
    //var vesShow = contextShow.tblVessels.First(v => v.vID == 15); 
    //txtNav.Text = vesShow.vNavEqpm; 
    //contextShow.Dispose(); 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
    GitamarineEntities1 contextUpdate = new GitamarineEntities1(); 

    var vesUpdate = contextUpdate.tblVessels.First(v => v.vID == 15); 
    vesUpdate.vNavEqpm = txtNav.Text; 
    contextUpdate.SaveChanges(); 
    } 
} 

Ребят я изменил кодирования, как описано выше, и до сих пор она работает, когда я Закомментируйте Page_Load Coding! но таким образом пользователь не может видеть, что он/она меняет !!!

+0

сообщения об ошибках? Текст уже подстрижен? – CularBytes

+0

Даже не одна ошибка !!! ничего! –

+0

Можете ли вы добавить класс контекста в свой код? Является ли tblVessels DbSet <>? Подтвердите, что при загрузке страницы текстовые поля заполняют текстовое поле? Является ли событие onClick назначенным 'Button1_Click'? – CularBytes

ответ

2

Все, что вам нужно сделать, это просто проверить IsPostBack на Page_Load. Попробуйте следующее:

 if (!IsPostBack) 
     { 
      GitamarineEntities1 contextShow = new GitamarineEntities1(); 
      var vesShow = contextShow.tblVessels.First(v => v.vID == 15); 
      txtNav.Text = vesShow.vNavEqpm; 
     } 
+0

Дорогой @Hadi объясните мою проблему и расскажите мне, как она работает ??? Пожалуйста ... Я так благодарен! Еще раз спасибо!!! –

+0

Вы можете найти свои ответы [здесь] (http://stackoverflow.com/questions/183254/what-is-a-postback) –

0

Учитывая, что ваш текст загружается внутри текстового поля, я думаю, что нет ничего плохого в linq для базы данных.

Ваша кнопка на вашей странице HTML, вероятно, не назначена для вашего обработчика событий Button_Click.

Ваша кнопка должна выглядеть следующим образом:

<asp:Button ID="button1" runat="server" Text="Button" OnClick="Button1_Click" /> 

Убедитесь, что он находится внутри <form> элемента, который также имеет атрибут runat="server"

установить точку останова на обработчик событий и посмотреть, если он сработал. Если нет, тогда нам нужно больше кода для исправления этой проблемы.

+0

все сделано дорогим! Я любитель, но не так! Я думаю, что 'var ves = context.tblVessels.Single (v => v.vID == 15);' - объект, созданный из контекста, и это не сама модель! –

+0

Показать класс 'GitamarineEntities' – CularBytes

+0

это объект ADO. Модель –

0

Что делает UpdateModel()? попробуйте прокомментировать это и посмотрите, обновляется ли vNavEqpm из значения текстового поля. Еще одна вещь, которую стоит рассмотреть: попробуйте повторно инициализировать контекст снова внутри события нажатия кнопки и удалите его, когда вы его используете, на самом деле не рекомендуется поддерживать соединение таким образом, вы, вероятно, блокируете извлеченную запись в PageLoad

+0

Я думаю, что ваше право на блокировку восстановлено DATA! Я привел контекст сущности внутри pageload и кнопки! и сталь не повезло! –