PDA

View Full Version : سوال: استفاده از Connection String در سه لایه ؟؟



Fartaj
شنبه 23 اردیبهشت 1391, 12:03 عصر
سلام خدمت دوستان

می خواستم ببینم من این پروژه سه لایه که شروع کردم تونستم اطلاعات رو تو گرید نشون بدم بعد یک قسمت ویرایش داخل گرید گزاشتم روش که کلیک می شه می ره به سمت صفحه به روز رسانی تا تکس باکس ها و ادیتور رو با اطلاعات دیتابیس پر کنه حالا برای این query هم باید تو لایه هام کلاس تعریف کنم و اینکه sp اون به چه صورت خواهد بود ؟؟ بعد یه نکته دیگه من این پنل رو که می تونه هم برای ارسال خبر و هم برای به روز رسانی استفاده بشه تو user contorol درست کردم فراخوانی query تو user contorol مشکلی نداره ؟؟ ممنون می شم یکم بیشتر توضیح بدین -- قضیه این سه لایه داره برام سنگین تموم می شه
یک سوال دیگه من تو لایه DAL یک کلاس برای دیتابیس گزاشتم و برای conection string از این کد استفاده می کنم


public string ConnectionString
{
get
{
return "Data Source=.;Initial Catalog=Hotel;Integrated Security=True";
}
}

مشکلی که داره اگر دقت کرده باشید من connection string رو دستی گزاشتم اما فایل app.config رو هم گزاشتم منتها وقتی برای فراخونی می نویسم :


ConfigurationSettings.appsetting

برنامه مشکل پیدا می کنه و روی کد که وامیستم می گه این کد منسوخ شده و باید از :


ConfigurationManager

استفاده کنید اما اون فعال نیست ؟؟؟؟؟ من با vs2010 دارم کار می کنم
ممنون می شم اگه وقت بزارید

mo.esmp
شنبه 23 اردیبهشت 1391, 14:52 عصر
من توصیه میکنم که Connection String رو به جای ذخیره در داخل کد تو web.config ذخیره کنید و اون رو هر جا که نیاز داشتید از web.config واکشی کنید و بعدا تغییر اون مثلا روی هاست آسونتره.
دار لایە DAL یە کلاس با نام AppConfiguration ایجاد کنید از طریق اون کلاس تنـظیماتی مثل Connection String رو اعمال و یا مقدار اون رو برگردونید.
public static class AppConfiguration
{
public static string ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; }
}
}

Fartaj
شنبه 23 اردیبهشت 1391, 15:12 عصر
آخه مشکل اینجاست که من لایه ها رو به صورت add projects به یک sulotion خالی اضافه کردم و وقتی تو لایه DAL از app.config استفاده می کنم ConfigurationManager رو نمی شناسه ؟؟

d_derakhshani
شنبه 23 اردیبهشت 1391, 15:20 عصر
لایه DAL می بایست کانکشن استرینگ رو از لایه بیرونی دریافت کنه. یعنی به عنوان یک پارامتر برای اون ارسال بشه(به صورت استاتیک و یا در سازنده. که استاتیک رو بنده بیشتر پیشنهاد می کنم. مگر در حالت های خاص)

mo.esmp
شنبه 23 اردیبهشت 1391, 16:37 عصر
آخه مشکل اینجاست که من لایه ها رو به صورت add projects به یک sulotion خالی اضافه کردم و وقتی تو لایه DAL از app.config استفاده می کنم ConfigurationManager رو نمی شناسه ؟؟
فضای نامی System.Configuration رو به کلاس اضافه کنید و نیازی بە استفادە از app.config نیست. برای توضیحات بیشتر سری به این لینک بزنید توضیحات خوبی در مورد N-Layer Architectur داره.
N-Layered Web Applications with ASP.NET 3.5 (http://imar.spaanjaars.com/476/n-layered-web-applications-with-aspnet-35-part-1-general-introduction)

fakhravari
شنبه 23 اردیبهشت 1391, 21:05 عصر
public static class ClsConfig
{
private static string dataSource;
public static string DataSource
{
get { return dataSource; }
set { dataSource = value; }
}
private static string catalog;
public static string Catalog
{
get { return catalog; }
set { catalog = value; }
}
private static string pwd;
public static string Pwd
{
get { return pwd; }
set { pwd = value; }
}
private static string packetSize;
public static string PacketSize
{
get { return packetSize; }
set { packetSize = value; }
}

private static string userID;
public static string UserID
{
get { return userID; }
set { userID = value; }
}
private static string workstationId;
public static string WorkstationId
{
get { return workstationId; }
set { workstationId = value; }
}


public static string Connection()
{
DataSource = @"COMPUTER1\SQLEXPRESS";
Catalog = "TGJ";
PacketSize = "8000";
return "Data Source=" + DataSource + ";Initial Catalog=" + Catalog + ";Packet Size=" + PacketSize + ";Integrated Security=True";
}

}