2014-10-30 3 views
0

Gurus,Сериализации EntityFramework LINQ объектов

Я хочу, чтобы сериализовать объект Entityframe Работы (основной объект из таблицы Oracle). Я использую LINQ Query.

Код сниппета

using (Entities1 ctx = new Entities1()) 
    { 

      ctx.Configuration.ProxyCreationEnabled = false;      
    var oraLINQ1 = from ime in ctx.INV_MOVE_EVENT 
           select new 
           { 
            ime.TO_POS_SLOT 
           }; 
       var bformatter = new BinaryFormatter(); 
       Stream stream = File.Open("INVMOVEEVENT.ifl", FileMode.Create); 
       bformatter.Serialize(stream, oraLINQ1); 
       stream.Close(); 
     } 

я получаю исключение

"Type 'System.Data.Entity.Infrastructure.DbQuery`1[[<>f__AnonymousType0`1[[System.String, 
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], EntityFramework, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' in Assembly 'EntityFramework, 
Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as 
serializable."} System.Exception {System.Runtime.Serialization.SerializationException} 

Я попробовал класс INV_MOVE_EVENT сущность наследования ISerializable. Это не сработало. Любые подсказки, указывающие на правильное направление, высоко ценятся.

+0

так что 'TO_POS_SLOT' является сущностью? потому что вы пытаетесь сериализовать коллекцию 'TO_POS_SLOT', а не' INV_MOVE_EVENT' –

+0

Спасибо за ответ .. Я не понимаю. Можете ли вы помочь мне с исправлением кода. –

+0

Какой тип объекта 'TO_POS_SLOT'? –

ответ

0

Я не могу проверить его здесь на моей стороне, но попытался ли преобразовать запрос в список?

using (Entities1 ctx = new Entities1()) 
    { 

      ctx.Configuration.ProxyCreationEnabled = false;      
    var oraLINQ1 = from ime in ctx.INV_MOVE_EVENT 
           select new 
           { 
            ime.TO_POS_SLOT 
           }; 
       var bformatter = new BinaryFormatter(); 
       Stream stream = File.Open("INVMOVEEVENT.ifl", FileMode.Create); 
       bformatter.Serialize(stream, oraLINQ1.ToList()); 
       stream.Close(); 
     } 

Должно работать нормально.

Смежные вопросы