PDA

View Full Version : مشکل در ایجاد connectin در linq to sql



mohsen_zelzela00
دوشنبه 10 فروردین 1388, 01:50 صبح
با عرض سلام خدمت دوستان عزیز
من در ایجاد connection در linq to sql مشکل دارم و هر چقدر در کتابهای لاتین جستجو کردم نتونستم یه connection به database بنویسم در موارد آموزشی که در سایت بود جدول رو در فایلlinq to sql classes اضافه میکردیم ولی من میخوام این connection رو با کد نویسی انجام بدم ممنون میشم دوستان کمکم کنید

Ali_Mor
سه شنبه 11 فروردین 1388, 09:20 صبح
از DataContextمیتونی به شی Connectionدسترسی پیدا کنی


Dim db As New DataClasses1DataContext
db.Connection.ConnectionString = "Data Source=SERVER\SERVER;Initial Catalog=DBTest;Integrated Security=True"

mohsen_zelzela00
سه شنبه 11 فروردین 1388, 12:00 عصر
از DataContextمیتونی به شی Connectionدسترسی پیدا کنی


Dim db AsNew DataClasses1DataContext
db.Connection.ConnectionString = "Data Source=SERVER\SERVER;Initial Catalog=DBTest;Integrated Security=True"


ببخشید دوست عزیز
DataClasses1 چی هست ؟؟؟؟؟؟؟؟؟؟؟/
و آیا برای datacontext باید namespace خاصی رو اضافه کرد ؟؟؟؟

mohsen_zelzela00
سه شنبه 11 فروردین 1388, 12:11 عصر
میخواستم ببینم که کد زیر کارش چی هست (فکر کنم که برای ساختن جدوله) و چرا وقتی من این کد را در c# مینویسم از من خطا میگیره
(من این پست رو اینجا نوشتم چون فکر کنم به مبحث connection مربوط باشه)


[Table(Name="Person")]
public class Person
{
private int _ID;
private int _IDRole;
private string _lastName;
private string _firstName;
[Column(Name="ID", Storage="_ID", DbType="int NOT NULL IDENTITY",
IsPrimaryKey=true, IsDbGenerated=true)]
public int ID
{
get { return _ID; }
set { _ID = value; }
}
}
[Column(Name="IDRole", Storage="_IDRole", DbType="int NOT NULL")]
public int IDRole
{
get { return _IDRole; }
set { _IDRole = value; }
}
[Column(Name="LastName", Storage="_lastName",
DbType="nvarchar NOT NULL")]
public string LastName
{
get { return _lastName; }
set { _lastName = value; }

}

[Column(Name="FirstName", Storage="_firstName",
DbType="nvarchar NOT NULL")]
public string FirstName
{
get { return _firstName; }
set { _firstName = value; }
}
}



و بعد از اون کد
DataContext زیر رو مینویسم خطای زیر رو میده



DataContext PeopleDataContext = new DataContext(connString);
Table<Person> People = PeopleDataContext.GetTable<Person>();


خطا


The type or namespace name 'DataContext' could not be found (are you missing a using directive or an assembly reference

Ali_Mor
چهارشنبه 12 فروردین 1388, 09:11 صبح
DataClasses1 چی هست ؟؟؟؟؟؟؟؟؟؟؟/
و آیا برای datacontext باید namespace خاصی رو اضافه کرد ؟؟؟؟
در واقع فایلlinq to sql classe که پسوند dbml دارد، شامل چند کلاس است که یکی از آنها از نوع DataContext است و برای هر جدول هم که در آن گذاشتی یک کلاس می سازد(همنام همان جدول بانک).برای دیدن این کلاس ها باید فایلی با پسوند .designer.cs رو ببینی(توصیه می کنم حتما با این کدها که توسط خود ویژوال استودیو تولید شده کلنجار بری، خیلی برای شروع آموزنده است)


میخواستم ببینم که کد زیر کارش چی هست (فکر کنم که برای ساختن جدوله)
کدی که گذاشتی در واقع یکی از آن کلاسها است که در بالا توضیح دادم و همانطور که درست حدس زدی مربوط به یک جدول در بانک(البته فکر می کنم این کدها را دستی نوشتی یا از یک کتابی گرفتی، چون یک کم با کدهای تولیدی خود ویژوال استودید فرق دارد). مشکل از این کدها نیست. احتمالا مشکل از این است که فراموش کرده ای کلاسDataContext رو پیاده سازی کنی. بازم توصیه می کنم که کدهای تولیدی توسط ویژوال استودیو رو ببینی، اون موقع می فهمی دقیقا DataContext چه می کنه
اگر پاسخ هام گنگ بوده یا هنوز هم گنگ هست ببخش. سوال بود اگر بلد باشم در خدمتم

mohsen_zelzela00
چهارشنبه 12 فروردین 1388, 12:54 عصر
در واقع فایلlinq to sql classe که پسوند dbml دارد، شامل چند کلاس است که یکی از آنها از نوع DataContext است و برای هر جدول هم که در آن گذاشتی یک کلاس می سازد(همنام همان جدول بانک).برای دیدن این کلاس ها باید فایلی با پسوند .designer.cs رو ببینی(توصیه می کنم حتما با این کدها که توسط خود ویژوال استودیو تولید شده کلنجار بری، خیلی برای شروع آموزنده است)


کدی که گذاشتی در واقع یکی از آن کلاسها است که در بالا توضیح دادم و همانطور که درست حدس زدی مربوط به یک جدول در بانک(البته فکر می کنم این کدها را دستی نوشتی یا از یک کتابی گرفتی، چون یک کم با کدهای تولیدی خود ویژوال استودید فرق دارد). مشکل از این کدها نیست. احتمالا مشکل از این است که فراموش کرده ای کلاسDataContext رو پیاده سازی کنی. بازم توصیه می کنم که کدهای تولیدی توسط ویژوال استودیو رو ببینی، اون موقع می فهمی دقیقا DataContext چه می کنه
اگر پاسخ هام گنگ بوده یا هنوز هم گنگ هست ببخش. سوال بود اگر بلد باشم در خدمتم

دوست عزیز ممنونم که به سوالاتم پاسخ میدهی
دوست عزیز من میخوام بون اینکه جدول خودم رو به پروژم اضافه کنم(بدون استفاده از فایل dbml ) به database خودم کار کنم آیا این کار امکان پذیر هست

Ali_Mor
پنج شنبه 13 فروردین 1388, 13:46 عصر
ببین برادر، اون فایل dbml حاوی تعدادی کلاسه. این کلاسها باید پیاده سازی بشه. چه در این فایل و چه در فایل های دیگه. خوبی dbml اینه که خود ویژوال استودیو این کدها رو برات تولید می کنه. خودت هم میتونی دستی بنویسی. ولی بالاخره باید پیاده سازی بشه.
من معمولا از فایل dbml استفاده می کنم و اگر خواستم اون کلاسها رو توسعه بدم و خودم چیزی بهش اضافه کنم، یک کلاس partial همنام اون کلاس میسازم و کدهام رو توش مینویسم. چون در کدهای تولیدی خود ویژوال استودیو اگر چیزی بنویسی احتمال دارد پاک شود(اگر روی یکی از جداول در dbml راست کلیک کنی و view code رو بزنی خودش این کلاس partial همنام رو برات میسازه)
کشیدن و انداختن جداول در dbml ربطی به کانکت شدن به بانک نداره. مثلا وقتی شما با کشیدن و رها کردن یک جدول یک دیتاست میساختی به این معنی بود که به بانک کانکت شدی؟؟ مسلما خیر. بلکه با این کار یک دیتاست customize شده برای اون جدول در بانک ساخته بودی که میتونستی بعد از کانکت شدن به بانک توسط Adapter پُرش کنی و ازش استفاده کنی. در واقع اون دیتا ست هم که ساخته می شد یک کلاس بود.
البته میشد بدون ساخت هیچگونه دیتاستی (به روشی که گفتم) ،هم داده ها را از بانک خوند اما در لینکیو حتما باید کلاس هایی برای جداول بانک پیاده سازی کنی و نیز یک کلاس از نوع DataContext نیز برای نگاشت شدن به کل بانک پیاده سازی بشه.
به زبان غیر علمی و خودمانی دیتا کانتکست در لینکیو معادل دیتا ست در قدیم است و هر کلاس مربوط به یک جدول در لینکیو هم معادل دیتاتیبل های درون اون دیتاست خواهد بود

mohsen_zelzela00
سه شنبه 18 فروردین 1388, 18:52 عصر
با سلام
علی جان شرمنده ما اینقدر iq ضعیفی داریم

میخواستم ببینم کار کد زیر چیست(چون به موضوع همین تاپیک مربوط میشه تاپیک جدیدی نزدم)


Northwnd nw = new Northwnd(@"northwnd.mdf");

Ali_Mor
چهارشنبه 19 فروردین 1388, 10:04 صبح
سوال پرسیدن نشانه ضعیف بودن iq نیست. با این حرفا دیگه جرات نمی کنه سوال بپرسه.
در مورد کد بالا، چیزی زیادی نفهمیدم. اگر قطعه کد بیشتری میگذاشتی بهتر بود. اگر مربوط به لینکیو باشد حدس میزنم northwind همون کلاسی که از DataContext ارث می بره. چون اونها هم در سازنده خودشون میتونن کانکشن استرینگ رو بگیرند.

mams_C#
دوشنبه 24 فروردین 1388, 09:01 صبح
کد با دیتابیس دیفالت در SQL ، و نمونه ای از آن را تولید و آدرس فایل mdf. به آن ست شده تا از فیلدهای آن همانند کلاس استفاده گردد.