2013-03-25 52 views
0

我想写我的对象,它实现的DbContext到一个文件,但我遇到了麻烦DataContractSerializer的工作。我一直在寻找在这个职位上的主题http://www.riggshill.com/home/node/24,但我得到一个错误:的DataContractSerializer不工作的MVC的DbContext对象

Error 10 'System.Runtime.Serialization.DataContractSerializer' does not contain a definition for 'Serialize' and no extension method 'Serialize' accepting a first argument of type 'System.Runtime.Serialization.DataContractSerializer' could be found (are you missing a using directive or an assembly reference?)

我的类看起来如下:

public class ManagementDbContext : DbContext 
{ 
    public DbSet<RemoteHost> RemoteHosts {get;set;} 
    public DbSet<DataSource> DataSources { get; set; } 

    public override int SaveChanges() 
    { 

     using (FileStream fs = File.OpenWrite("ManagementData.xml")) 
     { 
      XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs, Encoding.UTF8); 
      DataContractSerializer srlz = new DataContractSerializer(typeof(ManagementDbContext)); 
      srlz.Serialize(writer, this); 
      writer.Close(); // ensure it's properly flushed 
     } 
     return base.SaveChanges(); 
    } 
} 

编辑:

好了,所以它变成我跟踪的示例代码很糟糕,而且我犯了错误。行srlz.Serialize(writer,this)应该是srlz.WriteObject(writer,this) 如此处所示DataContractSerializer 另外我不能序列化DbContext的实现,并且在类上缺少[Serializable]和[DataContract]属性,而在成员上缺少[DataMember()]作为Daniil指出。

回答

1

起初 - 你需要在ManagementDbContext使用SerializableDataContract属性。在第二个因为DbContext没有标记任何属性的,你不能序列化你的对象。

Serialization

+0

所以我根本无法序列化我的对象基本quide?我如何将它写入文件? – James 2013-03-25 11:16:11

+0

@judgeja我只能建议做一个简单的物体,如SimpleDbContext具有相同的属性,标志着从另一个对象的属性和不继承。并将ManagementDbContext复制到SimpleDbContext。 – Daniil 2013-03-25 11:19:47

+0

尝试过,但它仍然存在相同的问题..您可以看到新的类上面 – James 2013-03-25 11:34:16