PDA

View Full Version : حرفه ای: مشکل در جست و جو در Entity Framwork



behzadbb1987
شنبه 10 فروردین 1392, 01:30 صبح
سلام
من با استفاده از کدهای زیر عملیات جستجو را انجام میدهم
اگر دیتا وجود داشته باشد بدون مشکل پاسخ true را دریافت میکنم
و اگر کدکالا که به عنوان پارامتر به متد ارسال میشود( codekala ) در دیتا وجود نداشته باشد، برنامه خطا میدهد و پاسخ false دریافت نمیشود.

// Select By CodeKala
public static IQueryable<Product> KalaByKID(int CodeKala)
{
IQueryable<Product> kala = from p in db.Products where (p.KID==CodeKala) select p;
return kala;
}

// Check Kala? همچین کالایی وجود دارد true=از قبل وجود داشته false=وجود ندارد میتوانید با این کد کالای جدید ثبت را نمایید
public static bool CheckOfKala(int CodeKala)
{
int kala1 = new int();
kala1 =Convert.ToInt32(KalaByKID(CodeKala).First().KID);
if (CodeKala==kala1)
{
return true;
}
else
{
return false;
}
}

جدول مورد نظر هم بدین شکل است:
102100

اسکریپ ایجاد جدول:
GO

/****** Object: Table [dbo].[Products] Script Date: 03/30/2013 01:28:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Products](
[PID] [int] IDENTITY(1,1) NOT NULL,
[KID] [int] NULL,
[Title] [nvarchar](50) NULL,
[Carton] [int] NULL,
[Sub_Carton] [int] NULL,
[Packet] [int] NULL,
[Numofpack] [int] NULL,
[Type] [nvarchar](50) NULL,
CONSTRAINT [PK_commodity] PRIMARY KEY CLUSTERED
(
[PID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

Mahmoud.Afrad
شنبه 10 فروردین 1392, 11:08 صبح
اگر فقط وجود یا عدم وجود کالا رو بخواهید بررسی کنید میتونید توسط متد Any این کار را انجام بدید.(در اینصورت به متد KalaByKID نیازی نیست).

private bool CheckOfKala(int CodeKala)
{

bool isRegisterd = (from p in db.Products
where (p.KID == CodeKala)
select p
).Any();
return isRegisterd;
}

ولی اگر به اطلاعات اون کالا هم نیاز دارید باید متد را تغییر بدید.

piroozman
شنبه 10 فروردین 1392, 12:40 عصر
بنده هم در اين خصوص مشكلات زيادي داشتم. به نظرم بعضي وقتا پاك كردن صورت مسئله هم بد نيست. من قسمتي رو كه false بر مي گردونه توي يك catch قرارداد دادم. مسئله پاك شد و مشكل حل . . . حالا خود داني عزيز

na3er-faraji
شنبه 17 فروردین 1392, 00:58 صبح
به جای متد first از متد firstordefault استفاده کنید. بعد با یک شرط میتونید نال بودن رو چک کنید.