الخلية موفر البيانات - غير قادر على تحويل كائن من النوع 'System.Byte[]' إلى النوع 'System.IConvertible'
-
05-07-2019 - |
سؤال
أواجه بعض الصعوبة مع الكيان إطار السياق أن تثبت مزعجة للغاية التصحيح.لقد تم إضافة الميزة إلى تطبيق أمس أن أعطى أحد الكيانات مجموعة إضافية من الطفل الكيانات (وتسمى النماذج) و بعد تحديث أحد التعبيرات تشمل() الذي جمع عندما الاستعلام عن الأم كائن الاستعلام بلدي هو الفشل مع InvalidCastException عند آخر واحدة من المجموعات التي عملت بشكل جيد من قبل تشمل()'d.
Unable to cast object of type 'System.Byte[]' to type 'System.IConvertible'
var b = DbEntities.Products.Include("Images").Include("Models").Include("Colors").FirstOrDefault(p => p.ID == id);
أنا مغشوش مع التعبير و إزالة مجموعات مختلفة/غيرت تشمل()'d الأطفال و اكتشفت هذا هو بالضبط مزيج من العناصر التي تسبب المذكورة استثناء.إذا كنت إزالة أي تلك يشمل() لا يوجد استثناء ، ولكن مع أولئك الأطفال الثلاثة هناك واحد في كل مرة كنت في محاولة لسحب واحد هذا المنتج واحد أو أكثر كيان في Colors
جمع.الاستثناء لا يتم طرح إذا كنت إزالة FirstOrDefault(p => p.معرف == id) أو إذا كان Colors
مجموعة فارغة.
ويبدو أن إضافة نماذج جمع كسر نقطة الاستعلام بلدي, ولكن أنا حقا لا أعرف السبب.
المصدر الدقيق الاستثناء Mysql.Data
و stacktrace ما يلي:
at MySql.Data.MySqlClient.MySqlDataReader.GetInt32(Int32 i)
at lambda_method(ExecutionScope , Shaper )
at System.Data.Common.Internal.Materialization.Coordinator.HasNextElement(Shaper shaper)
at System.Data.Common.Internal.Materialization.Shaper`1.RowNestedResultEnumerator.MoveNext()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.TryReadToNextElement()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.ReadElement()
at System.Data.Common.Internal.Materialization.Shaper`1.ObjectQueryNestedEnumerator.MoveNext()
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)
at Data.ProductsRepository.GetProduct(Int32 id) in ProductsRepository.cs:line 65
at Web.Controllers.Areas.Admin.ProductsController.EditProduct(Int32 id) in ProductsController.cs:line 111
at lambda_method(ExecutionScope , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
الكيان التعاريف (الميادين ذات الصلة فقط)
المنتج
int
معرفEntityCollection<ProductColorOption>
الألوانEntityCollection<ProductImage>
الصورEntityCollection<ProductModel>
نماذج
ProductColor
int
معرف
ProductColorOption
int
معرفint
ProductIDint
ProductColorID
ProductModel
int
معرفint
ProductID
ProductImage
int
معرفint
ProductIDsbyte?
النظام
العلاقات
- المنتج.معرف
FK
ProductImage.ProductID (واحد إلى كثير) - المنتج.معرف
FK
ProductColorOption.ProductID (واحد إلى كثير) - المنتج.معرف
FK
ProductModel.ProductID (واحد إلى كثير) - ProductColor.معرف
FK
ProductColorOption.ProductColorID (واحد إلى كثير)
شكرا جميعا!
التحديث
gaustin اقتراح أدناه إصلاح المشكلة (لا مزيد من استثناء), ولكن حقا لا تستهدف المشكلة الفعلية.لهذا السبب سأترك السؤال 'دون رد'.
تحديث 2
وأنا أدرك الآن أن علة تتعلق بعدم إطار الكيان ، بل إلى الخلية موفر البيانات.لسبب ما هو علاج ProductColor.معرف كما بايت[] ثم يحاول أن يلقي ذلك عمياء إلى int.هذا ليس كيانا إطار مشكلة على الإطلاق.اللعنة عليك شركة صن مايكروسيستمز أوراكل.
المحلول
هل حاولت تحميل كسول ويشمل?
var product = DbEntities.Products.FirstOrDefault(p => p.Id == id);
product.Images.Load();
// ... and so on
التي قد تكون مفيدة.
هذا يبدو أيضا أن يكون المشكلة المعروفة.لست متأكدا إذا كان هناك معروف القرار في هذه اللحظة.إذا كان هناك أنا لا يمكن العثور عليه.