EntityFramework LINQ对象的序列化

时间:2014-10-30 01:40:37

标签: linq object serialization

大师,

我想序列化Entityframe Work对象(底层对象来自Oracle表)。我正在使用LINQ查询。

代码段

    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}

我尝试继承ISerializable的INV_MOVE_EVENT实体类。它没有用。任何指向正确方向的线索都非常受欢迎。

1 个答案:

答案 0 :(得分: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();
       }

它应该可以正常工作。