我想写我的对象,它实现的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指出。
所以我根本无法序列化我的对象基本quide?我如何将它写入文件? – James 2013-03-25 11:16:11
@judgeja我只能建议做一个简单的物体,如SimpleDbContext具有相同的属性,标志着从另一个对象的属性和不继承。并将ManagementDbContext复制到SimpleDbContext。 – Daniil 2013-03-25 11:19:47
尝试过,但它仍然存在相同的问题..您可以看到新的类上面 – James 2013-03-25 11:34:16