الخلية موفر البيانات - غير قادر على تحويل كائن من النوع 'System.Byte[]' إلى النوع 'System.IConvertible'

StackOverflow https://stackoverflow.com/questions/1401310

سؤال

أواجه بعض الصعوبة مع الكيان إطار السياق أن تثبت مزعجة للغاية التصحيح.لقد تم إضافة الميزة إلى تطبيق أمس أن أعطى أحد الكيانات مجموعة إضافية من الطفل الكيانات (وتسمى النماذج) و بعد تحديث أحد التعبيرات تشمل() الذي جمع عندما الاستعلام عن الأم كائن الاستعلام بلدي هو الفشل مع 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 ProductID
  • int ProductColorID

ProductModel

  • int معرف
  • int ProductID

ProductImage

  • int معرف
  • int ProductID
  • sbyte? النظام

العلاقات

  • المنتج.معرف 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

التي قد تكون مفيدة.

هذا يبدو أيضا أن يكون المشكلة المعروفة.لست متأكدا إذا كان هناك معروف القرار في هذه اللحظة.إذا كان هناك أنا لا يمكن العثور عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top