PDA

View Full Version : سوال: مشکل در کار با Linq To Sql



follower
جمعه 18 مرداد 1392, 23:56 عصر
با سلام خدمت دوستان ...

بنده یه برنامه ی ساده برای کار با Linq نوشتم. برای درج و حذفو ویرایش چند تا فیلد با فرم زیر :

http://axgig.com/images/22598987457581135461.jpg

داده ها پس از زدن دکمه ی Add در dataGridView نمایش داده می شود و حتی بعد از این که از برنامه خارج می شوم و دوباره آن را Run می کنم باز هم داده ها نمایش داده می شود ولی وقتی کل ویژوال استودیو رو می بندم و دوباره باز می کنم و برنامه رو اجرا می کنم داده ای برای نمایش نیست... کدی هم که نوشتم اینه :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DBLinq
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
var DB = new DataClasses1DataContext();
DB.Fsave(txtFname.Text, txtLname.Text, Convert.ToInt16(txtPhoneNumber.Text)
, Convert.ToInt16(txtAge.Text));
dataGridView1.DataSource = DB.Table1s;
}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'dB_ProjectLinqDataSet.Table1' table. You can move, or remove it, as needed.
this.table1TableAdapter.Fill(this.dB_ProjectLinqDa taSet.Table1);
var DB = new DataClasses1DataContext();
dataGridView1.DataSource = DB.Table1s;
}

private void button1_Click_1(object sender, EventArgs e)
{
if (MessageBox.Show("Do You Want To Delete This Field?", "Delete",
MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
{
var DB = new DataClasses1DataContext();
DB.Fdelete(Convert.ToInt32(dataGridView1.CurrentRo w.Cells["PhoneNumber"].
Value));
dataGridView1.DataSource = DB.Table1s; //For Refresh Data Grid View After Delete Field

}
}

private void button1_Click_2(object sender, EventArgs e)
{
if (dataGridView1.RowCount > 0)
{
var Fr = new Form2();
Fr.txtFname.Text = dataGridView1.CurrentRow.Cells["FirstName"].Value.ToString();
Fr.txtLname.Text = dataGridView1.CurrentRow.Cells["LastName"].Value.ToString();
Fr.txtPhoneNumber.Text = dataGridView1.CurrentRow.Cells["PhoneNumber"].Value.ToString();
Fr.txtAge.Text = dataGridView1.CurrentRow.Cells["Age"].Value.ToString();
Fr.ShowDialog();
var DB = new DataClasses1DataContext();
dataGridView1.DataSource = DB.Table1s;
}
}

private void label1_Click(object sender, EventArgs e)
{

}

private void textBox1_TextChanged(object sender, EventArgs e)
{
var DB = new DataClasses1DataContext();
if (txtSearch.Text == "")
dataGridView1.DataSource = DB.Table1s;
else
dataGridView1.DataSource = DB.Table1s.Where(c => c.LastName.Substring(0,
txtSearch.Text.Length) == txtSearch.Text).Select(c => c);

}

private void button1_Click_3(object sender, EventArgs e)
{
var frm = new frmreport();
frm.ShowDialog();
}
}
}




یه نکته ی دیگه این که هیچ داده ای توی جدول پایگاه داده هم ذخیره نمی شه . (از روش نوشتن پروسیجر برای ذخیره و ... استفاده کردم) ...
http://axgig.com/images/13635077414740983056.jpg

parvizwpf
شنبه 19 مرداد 1392, 00:02 صبح
کد متد fsave رو میزارید؟

follower
شنبه 19 مرداد 1392, 00:20 صبح
کد متد fsave رو میزارید؟

بله فراموش کردم ... بفرمایید ...

ALTER PROCEDURE dbo.Fsave

@FirstName nvarchar(10),
@LastName nvarchar(18),
@PhoneNumber int,
@age int

AS
Insert into Table1 values(@FirstName,@LastName ,@PhoneNumber , @Age)
RETURN

parvizwpf
شنبه 19 مرداد 1392, 00:32 صبح
جالبه لینک استفاده مینکنید ولی بازم استور برای اینزرت مینویسید. نمیدونم ولی احساس میکنم از خود insertOnSubmit لینک استفاده کنید.

follower
شنبه 19 مرداد 1392, 00:44 صبح
جالبه لینک استفاده مینکنید ولی بازم استور برای اینزرت مینویسید. نمیدونم ولی احساس میکنم از خود insertOnSubmit لینک استفاده کنید.

بلد نیستم اون روش رو ...

parvizwpf
شنبه 19 مرداد 1392, 00:58 صبح
نوشتن دوباره یک اینزرت کاری تقریبا بیهوده اس. اصلا لینک اومده این مشکلات رو برطرف کنه.
کاری نداره:
http://msdn.microsoft.com/en-us/library/bb386941.aspx

follower
شنبه 19 مرداد 1392, 01:00 صبح
نوشتن دوباره یک اینزرت کاری تقریبا بیهوده اس. اصلا لینک اومده این مشکلات رو برطرف کنه.
کاری نداره:
http://msdn.microsoft.com/en-us/library/bb386941.aspx

چه جالب همین الان داشتم این رو می خوندم ولی چیزی ازش نفهمیدم ... این خطش :

db.Orders.InsertOnSubmit(ord);

parvizwpf
شنبه 19 مرداد 1392, 01:10 صبح
نفرمایید: کجاشو نمیفهمید؟
کافیه شما بنویسید
DB.Table1s.InsertOnSubmit(شی ای از کلاس table1s);
اگه اینو درک نکردید پس چطور لینک میزنید؟

follower
شنبه 19 مرداد 1392, 01:35 صبح
نفرمایید: کجاشو نمیفهمید؟
کافیه شما بنویسید
DB.Table1s.InsertOnSubmit(شی ای از کلاس table1s);
اگه اینو درک نکردید پس چطور لینک میزنید؟

الان کدی که گذاشتم برای دکمه ی ADD :

اینه :

var DB = new DataClasses1DataContext();

Table1 table = new Table1{
FirstName=txtFname.Text,LastName=txtLname.Text,Pho neNumber=Convert.ToInt16(txtPhoneNumber.Text)
,age=Convert.ToInt16(txtAge.Text)
};
DB.Table1s.InsertOnSubmit(table);

ولی بازم کار نمی کنه ... همون مشکل قبلی ... مشکل از جای دیگه ای باید باشه ...

parvizwpf
شنبه 19 مرداد 1392, 01:39 صبح
الان سیو نمیکنه؟

follower
شنبه 19 مرداد 1392, 01:44 صبح
الان سیو نمیکنه؟

نه ...............

parvizwpf
شنبه 19 مرداد 1392, 02:03 صبح
پیشنهاد میکنم توی یه فرم دیگه اینزرت روتست کنید اصلا سیو میکنه چیزی یا نه؟ اگه نه احتمال میدم ساختار dbml مشکل داره.

follower
شنبه 19 مرداد 1392, 16:10 عصر
می شه شما یه بار برنامه رو تست کنید ؟ http://uploadtak.com/images/p881_test.rar

parvizwpf
یک شنبه 20 مرداد 1392, 18:35 عصر
من express ندارم. پیشنهاد میکنم دوباره ساختر dbml رو بسازید. تست کنید

follower
یک شنبه 20 مرداد 1392, 20:49 عصر
من express ندارم. پیشنهاد میکنم دوباره ساختر dbml رو بسازید. تست کنید

اصلا کلا لینک رو گذاشتم کنار با دیتاست توی یه جدول دیگه add کردم... بازم چیزی توی جدول ذخیره نمی شه... منظورتون از ساختار dbml چیه ؟

آخه جالب اینه که هیچ اروری هم نمی ده !!!!:عصبانی++:

parvizwpf
دوشنبه 21 مرداد 1392, 19:13 عصر
sql دیگه ای ندارید تست کنید الن خودتون دستی دیتا بزنید ببینید اصلا میاد توی دیتا گرید؟

salargham
دوشنبه 28 مرداد 1392, 22:00 عصر
سلام
این یه نمونه کد!