2014-04-22 52 views
1

我使用代碼第一EF 5與此類。實體框架5二進制對象保存,但始終加載null

public class MyEvent 
{ 
    public int Id{ get; set; } 
    public object MyObject { get; set; } 
    public byte[] SerlializedObject 
    { 
     get 
     { 
      if (MyObject != null) 
      { 
       IFormatter formatter = new BinaryFormatter(); 
       using (var ms = new MemoryStream()) 
       { 
        formatter.Serialize(ms, MyObject); 
        return ms.ToArray(); 
       } 
      } 
      else 
      { 
       return null; 
      } 
     } 
     set 
     { 
      if (value.Length > 0) 
      { 
       IFormatter formatter = new BinaryFormatter(); 
       using (var ms = new MemoryStream(value)) 
       { 
        MyObject = formatter.Deserialize(ms); 
       } 

      } 
      MyObject = null; 
     } 
    } 

當我使用上下文來保存爲MyObject屬性的對象,它正確保存序列化的數據到數據庫。

當我加載從上下文實體:

MyEvent e = db.MyEvents.Where(x => x.Id== myId).FirstOrDefault(); 

myObject的屬性爲null。我如何加載這個屬性?

+1

爲'SerializedObject' setter方法將總是設置'MyObject'到'null'。 – Romoku

+0

我需要配對編程....謝謝。 –

回答

1

您錯過了設置程序中的else子句或return語句。這將導致MyObject始終設置爲null

set 
{ 
    if (value.Length > 0) 
    { 
     IFormatter formatter = new BinaryFormatter(); 
     using (var ms = new MemoryStream(value)) 
     { 
      MyObject = formatter.Deserialize(ms); 
     } 

     return; 
    } 

    MyObject = null; 
} 

重新格式化爲清晰:

set 
{ 
    if (0 >= value.Length) 
    { 
     MyObject = null; 
     return; 
    } 

    IFormatter formatter = new BinaryFormatter(); 
    using (var ms = new MemoryStream(value)) 
    { 
     MyObject = formatter.Deserialize(ms); 
    } 

    return; 
} 
+0

對!由於某種原因,我正在尋找其他地方......謝謝。 –