PDA

View Full Version : سوال: نمونه برنامه خیلی ساده فقط برای درج در جداول رابطه ای



hdv212
چهارشنبه 13 خرداد 1388, 11:59 صبح
با سلام خدمت دوستان عزیز، چند تا سوال کلیدی در زمینه Asp.Net داشتم :

خدمت شما عرض کنم که جستجوی زیادی توی اینترنت کردم برای عملیات CRUD در وب سایت (به جای Win app که تخصص اصلی منه)، متاسفانه دوتا مشکل اساسی داشتم که میخواستم کمکم کنید :
1. هنوز یک راه مناسب برای عملیات CRUD در web app پیدا نکردم، وقتی توی اینترنت میگردم همش از SqlDataSource استفاده کردن(و هم اینکه تا حالا درج در جداول رابطه ای هم نداشتن)، ولی وقتی با دیگران صحبت میکنم میگن از Command معمولی استفاده کنی بهتره، به خاطر همین یک نمونه دیتابیس فرستادم که فقط سه تا جدول داره :
Customers,Order,Persons که بین مشتریات و سفارشات ارتباطی برقراره، زحمتی که براتون دارم اینه که یه نمونه web app خیلی ساده برام بسازید که ببینم چطوری یک مشتری رو به همراه سفارشاتش یکجا ثبت کنم (Insert Relational Data) و هم اینکه ببینم خودتون از چی استفاده میکنید و چی پیشنهاد میکنید.

2. نکته دیگه اینکه من برای نمایش داده ها از چه کنترلی استفاده کنم که به خشکی GridView نباشه ؟ آیا GridView رو پیشنهاد میکنید یا Repeater رو ؟
(چون ما در Win app از کامپوننت DevExpress استفاده میکنیم، اما در وب به خاطر مساله لیسانس، اینکار رو نمیکنیم)، میخواستم ببینم چطوری و از چی استفاده میکنید.


اینم کد T-Sql دیتابیس مورد نظر :


USE [Test]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Persons]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Persons](
[PersonID] [uniqueidentifier] NOT NULL,
[PersonName] [nvarchar](50) NULL,
CONSTRAINT [PK_Persons] PRIMARY KEY CLUSTERED
(
[PersonID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Customers]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Customers](
[CustomerID] [uniqueidentifier] NOT NULL,
[CustomerName] [nvarchar](50) NULL,
PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Orders]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Orders](
[OrderID] [uniqueidentifier] NOT NULL,
[CustomerID] [uniqueidentifier] NULL,
[OrderDate] [char](10) NULL,
CONSTRAINT [PK_Orders] PRIMARY KEY CLUSTERED
(
[OrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Orders_Customers]') AND parent_object_id = OBJECT_ID(N'[dbo].[Orders]'))
ALTER TABLE [dbo].[Orders] WITH CHECK ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY([CustomerID])
REFERENCES [dbo].[Customers] ([CustomerID])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Orders] CHECK CONSTRAINT [FK_Orders_Customers]

با تشکر

hdv212
پنج شنبه 14 خرداد 1388, 19:27 عصر
کسی نبود ؟

Behrouz_Rad
جمعه 15 خرداد 1388, 11:17 صبح
1. هنوز یک راه مناسب برای عملیات CRUD در web app پیدا نکردم، وقتی توی اینترنت میگردم همش از SqlDataSource استفاده کردن(و هم اینکه تا حالا درج در جداول رابطه ای هم نداشتن)، ولی وقتی با دیگران صحبت میکنم میگن از Command معمولی استفاده کنی بهتره، به خاطر همین یک نمونه دیتابیس فرستادم که فقط سه تا جدول داره :
Customers,Order,Persons که بین مشتریات و سفارشات ارتباطی برقراره، زحمتی که براتون دارم اینه که یه نمونه web app خیلی ساده برام بسازید که ببینم چطوری یک مشتری رو به همراه سفارشاتش یکجا ثبت کنم (Insert Relational Data) و هم اینکه ببینم خودتون از چی استفاده میکنید و چی پیشنهاد میکنید.

نسخه ي 7 اعمال متداول با GridView رو ببين.


2. نکته دیگه اینکه من برای نمایش داده ها از چه کنترلی استفاده کنم که به خشکی GridView نباشه ؟ آیا GridView رو پیشنهاد میکنید یا Repeater رو ؟


در ‍VS 2008 كنترل ListView اضافه شد. البته Repeater هم خوبه.

پ.ن: تا 15 تير نيستم.

HamidNazari
جمعه 15 خرداد 1388, 14:45 عصر
جناب hdv جان شما از DataSet و ObjectDataSource استفاده کردین ؟ اگه نه تو فولدر App_Code یه DataSet درست کنین و کارای معمول رو انجام بدین و بعد تو صفحه تون یه ObjectDataSource اضافه کنین و DataSourceش رو برابر با TableAdapter مربوطه قرار بدین و به کنترلی که میخواین Bind کنین .
یه جورائی شبیه به BidningSource تو WinForms هست ولی خب یه کم دنگ و فنگش بیشتره .

فقط یه سوال نسبتاً بیربط برام پیش اومد . چرا UniqueIdentifier؟

hdv212
جمعه 15 خرداد 1388, 14:59 عصر
جناب hdv جان شما از DataSet و ObjectDataSource استفاده کردین ؟ اگه نه تو فولدر App_Code یه DataSet درست کنین و کارای معمول رو انجام بدین و بعد تو صفحه تون یه ObjectDataSource اضافه کنین و DataSourceش رو برابر با TableAdapter مربوطه قرار بدین و به کنترلی که میخواین Bind کنین .
یه جورائی شبیه به BidningSource تو WinForms هست ولی خب یه کم دنگ و فنگش بیشتره .

خدا خیرت بده برادر، منظورت اینه که از دیتاست استفاده کنم و برای Bind کردن کنترلها از ObjectDataSource استفاده کنم ؟


در ‍VS 2008 كنترل ListView اضافه شد. البته Repeater هم خوبه.
دستت درد نکنه بهروز جان.


فقط یه سوال نسبتاً بیربط برام پیش اومد . چرا UniqueIdentifier؟
بخاطر اینکه میخوام اطمینان حاصل کنم داده هایی که وارد دیتابیس میشن یکتا هستن و Conflictای پیش نیاد، چون به غیر از ورود داده ها به دیتابیس، قراره از جای دیگه هم داده بیاد.

HamidNazari
جمعه 15 خرداد 1388, 16:57 عصر
خدا خیرت بده برادر، منظورت اینه که از دیتاست استفاده کنم و برای Bind کردن کنترلها از ObjectDataSource استفاده کنم ؟

آره عزیز ، ولی نه هر کنترلی ! اگه یه وقت مشکلی چیزی پیش اومد خبر بده .


بخاطر اینکه میخوام اطمینان حاصل کنم داده هایی که وارد دیتابیس میشن یکتا هستن و Conflictای پیش نیاد، چون به غیر از ورود داده ها به دیتابیس، قراره از جای دیگه هم داده بیاد.

اوکی ، در اینصورت که درست میفرمائید ... چون تو دیتابیس نمونه استفاده کرده بودی یه مقدار سوال برانگیز بود برام ;)