PDA

View Full Version : سوال: پیغام خطا برای دستورات EF



sadaf_
جمعه 11 مرداد 1392, 01:03 صبح
از این دستور استفاده کردم
البته در محیط WPF

using (var context = new MainDBEntities2())
{
IQueryable<User> contacts = context.Users.Where("it.FirstName = Mehdi");
List<User> items = contacts.ToList();
}

اما این پیغام مشاهده می شه
108332

sadaf_
جمعه 11 مرداد 1392, 03:38 صبح
تابع توسعه where ارگومانی از نوع رشته رو نمیپذیره - میخواید از esql استفاده کنید ولی خب انگار موضوع رو متوجه نشدید
لطفا در خصوص esql راهنمایی کنید؟

mousa1992
جمعه 11 مرداد 1392, 05:09 صبح
عذر بابت تاخیر در جواب (بخاطر مراسم سحری به تاخیر افتاد :p )
مقدار برگشتی از تابع توسعه where هنگامی که قصد ارسال رشته دارید از نوع ObjectQuery هست و Namespace = System.Data.Objects
این مثالی که تو msdn هست :
ObjectQuery<Product> productQuery = context.Products .Where("it.StandardCost > @cost", new ObjectParameter("cost", cost));

به صورت پیش فرض باید متغیرتون رو it درنظر بگیرید و شرط ها رو مینویسن مثل همون کاری که خودتون انجام دادید با این تفاوت که باید توی رشتتون پارامتر تعریف کنید و مقادیرو به تابع where بفرستید
اگر بخواین it و تغییر بدین از خاصیت Name شی ساخته شده از جنس ObjectQuery رو تغییر میدین

productQuery.Name = "product";// در اینجا بجای it باید من بعد از product استفاده شود


در نهایت کد شما تبدیل میشه به این :


using (var context = new MainDBEntities2())
{
System.Data.Objects.ObjectQuery<User> contacts = context.Users.Where("it.FirstName = @fname", new System.Data.Objects.ObjectParameter("fname", "Mehdi"));
List<User> items = contacts.ToList();
}


اینم لینک مطلب (http://msdn.microsoft.com/en-us/library/bb347374.aspx)

موفق باشید
یا علی

sadaf_
جمعه 11 مرداد 1392, 17:13 عصر
using (var context = new MainDBEntities2())
{
System.Data.Objects.ObjectQuery<User> contacts = context.Users.Where("it.FirstName = @fname", new System.Data.Objects.ObjectParameter("@fname", "Mehdi"));
List<User> items = contacts.ToList();
}


ضمن عرض قبولی طاعات و عبادات

من از این دستور استفاده کردم اما با این پیغام مواجه شدم

108365

آیا چگونگی استفاده از روش EF هم می تونه تأثیر داشته باشه؟

mousa1992
جمعه 11 مرداد 1392, 18:22 عصر
ضمن عرض قبولی طاعات و عباداتمتشکرم



من از این دستور استفاده کردم اما با این پیغام مواجه شدم
زمانی که پارامتر رو ارسال میکنید به where دیگه @ رو نباید قرار بدین که من اشتباها تو کد شما قرار دادم . اما خطایی که از شما گرفته میشه میگه که where نمیتونه دوتا ارگومان داشته باشه ! برا همین ازتون خواستم که پروژتونو اپ کنید اگه براتون ممکن باشه
تا بحال از این روش استفاده نکرده بودم ولی خب امروز تستش کردم و جواب گرفتم و مشکلی نبود و هرکاری کردم نتونستم پروژه رو اپ کنم البته خب چیز خاصی هم نداشت
مشکلتون حل نشد پروژه رو اپ کنید

موفق

sadaf_
جمعه 11 مرداد 1392, 21:07 عصر
می شه بگید EF رو چطوری ساختید
من حدس می زنم اشکال از نوع ساختنم باشه

mousa1992
جمعه 11 مرداد 1392, 21:24 عصر
لینک پروژه تست (http://csharp-developer.ir/Projects/ESQL_Test.rar)
موفق باشید

Mahmoud.Afrad
جمعه 11 مرداد 1392, 21:59 عصر
از این دستور استفاده کردم
البته در محیط WPF

using (var context = new MainDBEntities2())
{
IQueryable<User> contacts = context.Users.Where("it.FirstName = Mehdi");
List<User> items = contacts.ToList();
}

اما این پیغام مشاهده می شه
108332
میتونم بپرسم چه کوئری دقیقا میخواهید بنویسید.

sadaf_
جمعه 11 مرداد 1392, 23:45 عصر
میتونم بپرسم چه کوئری دقیقا میخواهید بنویسید.
فقط می خوام یک select انجام بدم
و شرط رو به صورت رشته ای بنویسم

sadaf_
جمعه 11 مرداد 1392, 23:46 عصر
لینک پروژه تست (http://csharp-developer.ir:8880/plesk/client@438/domain@500/hosting/file-manager/view/?cmd=download&file=ESQL_Test.rar)
موفق باشید
از من یوزر و پسورد می خواست؟

sadaf_
شنبه 12 مرداد 1392, 00:32 صبح
یوزر پس ؟!
کدوم قسمت ؟
وقتی که می خوام وارد سایت بشم
اون لینکی که دادید به محضی ک واردش می شم یوزر پسورد می خواد

sadaf_
شنبه 12 مرداد 1392, 00:50 صبح
نوع مدل شما

108388


نوع مدل من
108389

فرق می کنه!!!

mousa1992
شنبه 12 مرداد 1392, 00:55 صبح
عذر میخوام اطلاعاتم در این مورد کامل نیست ولی خب اره فرق میکنه مدل های ساخته شده
روشی که مدلو از دیتابیس ساختمو بهتون گفتم چجوریه