چجوری میتونم از myclass ایتمهایی رو که میخوام انتخاب کنم و نمایش بدم با استفاده از لامبدا؟
وقتی از {}select new myclass استفاده میکنم بهم خطا میده
ولی اگر یک کلاس دیگه(کاملا شبیهmyclass) که کی از پروپرتیهای myclass () رو نداره بزارم درست کار میکنه.
این خطا میده:
db.Categories.Select(d => new Category { CategoryName = d.CategoryName, CategoryID = d.CategoryID }).OrderByDescending(d => d.CategoryID);
این درسته:
db.Categories.Select(d => new Category2 { CategoryName = d.CategoryName, CategoryID = d.CategoryID }).OrderByDescending(d => d.CategoryID);
public class Category { [Key] public int CategoryID { get; set; } [Required(ErrorMessage = "لطفا {0} را وارد کنید")] public string CategoryName { get; set; } public virtual IEnumerable<Child> Childs { get; set; } }
public class Category2 { public int CategoryID { get; set; } public string CategoryName { get; set; } }
سلام سعی کنید اینطوری امتحان کنید امیدوارم جواب بده
db.Categories.Select(d => new { d.CategoryName, d.CategoryID }).OrderByDescending(d => d.CategoryID);
در ضمن نکته ای که هست هر کلاس رو میشه فقط توی یک جدول ساخت نمیشه دو تا کلاس رو مثل شما توی یک جدول درنظر گرفت.
من خوردم مواقعی که select رو مینویسم به همین شکل مینویسم تازه اون نام هایی رو که واسش انتخاب کردید رو هم میشه داخل ویو ها درست کرد
ممنون ولی
کلاس دومی یک کلاس معمولیه و جدولی ازش ساخته نمیشه و من صرفا اینو گذاشتم که بگم اینجوری میشه .
یعنی در کلاس اولی مسئله بخاطر اون کلید خارجی هست که به مشکل برمیخورم اگه اون کلید نباشه درست میشه ، باید این کلید رو چکار کرد؟
به سبک شما دیگه نمیشه برای ورودی و خروجی از کلاس استفاده کنیم ، مثلا:
IQueryable<Category>
مشکلتون نمیتونه در Select New باشه
شاید مشکل از Property ها باشه
رابطه رو به صورت Virtual کردید ولی سازنده نذاشتید
به شکل زیر درج کنید ببینید درست میشه
public class Category { [Key] public int CategoryID { get; set; } [Required(ErrorMessage = "لطفا {0} را وارد کنید")] public string CategoryName { get; set; } public virtual IEnumerable<Child> Childs { get; set; } public Category(){} }
این خطاها رو به من میده
{ "message": "An error has occurred.", "exceptionMessage": "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.", "exceptionType": "System.InvalidOperationException", "stackTrace": null, "innerException":{ "message": "An error has occurred.", "exceptionMessage": "The entity or complex type 'test.Models.Category' cannot be constructed in a LINQ to Entities query.", "exceptionType": "System.NotSupportedException", }
در گلوبال هم اینو گذاشتم
var jsonFormatter = GlobalConfiguration.Configuration.Formatters.OfType<JsonMediaTypeFormatter>().First(); jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)