PDA

View Full Version : سوال: دریافت null اگر linq داده ای از بانک پیدا نکرد



shahab_ksh
دوشنبه 15 آذر 1389, 13:31 عصر
دریافت null اگر linq داده ای از بانک پیدا نکرد

از تابع زیر برای دریافت اطلاعات از یک جدول استفاده می کنم


Function Return_Single(ByVal id As Integer) As Users
 
Dim db As New DataClassesDataContext
Dim quare = (From c In db.Users Where (c.ID = id) Select c).SingleOrDefault
Return_Single = quare
 
 
End Function


حال برای بدست آوردت مقادیر هم از دستورات زیر استفاده می کنیم



Response.Write(Return_Single(2).Name + "<br>")
Response.Write(Return_Single(2).Password + "<br>")
Response.Write(Return_Single(2).UserName + "<br>")


در صورتی که داده ای پیدا کرد بدون مشکل کار می کنه اما در صورتی که داده های پیدا نکرد اشکال زیر به وجود می یاد

Object reference not set to an instance of an object

حال به نظر شما این روش برای دریافت داده از یک سطر به این روش منطقی هست اگه نه راه حل شما چی؟

Y2K
دوشنبه 15 آذر 1389, 15:20 عصر
خوب من نمیدونم اون Response.Write ها رو کجا می نویسی ولی یه راهش اینه که در خود متد Return_Single قبل از بازگشت متد بررسی کنی ببینی quare نال هست یا نه و اگر نال هست یک آبجکت خالی از نوع Users ایجاد کنی و برگشت بدی
در ضمن از نظر کارایی، کدت اشتباه است
شما 3 بار متد روبا پارامتر یکسان برای یک کار فراخوانی کردی، که میتونی یکبار فراخوانی کنی و نتیجه را در یک آبجکت Users بریزی و 3 بار ازش استفاده کنی

shahab_ksh
دوشنبه 15 آذر 1389, 17:09 عصر
احتمالا منظور شما همون کاری که در خود تابع انجام دادم

مثلا در رویداد Page_Load



Dim db As New DataClassesDataContext
Dim quare = (From c In db.Users Where (c.ID = id) Select c).SingleOrDefault

Response.Write(quare().Name + "<br>")
Response.Write(quare().Password + "<br>")
Response.Write(quare().UserName + "<br>")



درسته من در این حالت یک بار اطلاعات رو از بانک خوندم

اما چطور میشه این داده ها رو به کلاس Users متصل کرد

راه من اینطوری بود



Dim udb As Users=quare


و بعد از داده های udb به صورت

udb.Name
udb.Username
udb.Passoword

استفاده کنم

حالا چطور میشه این کار رو بصورت تابع در Return_Single انجام داد

shahab_ksh
سه شنبه 16 آذر 1389, 11:28 صبح
راه حلی وجود ندارد