C# DataContractSerializer不适用于MVC DBContext对象

C# DataContractSerializer不适用于MVC DBContext对象,c#,asp.net-mvc,serialization,C#,Asp.net Mvc,Serialization,我试图将实现DbContext的对象写入一个文件,但是在让DataContractSerializer工作时遇到了问题。我在看这篇关于这个主题的文章,但我发现了一个错误: 错误10“System.Runtime.Serialization.DataContractSerializer”不包含“Serialize”的定义,并且找不到接受“System.Runtime.Serialization.DataContractSerializer”类型的第一个参数的扩展方法“Serialize”(是否缺少

我试图将实现DbContext的对象写入一个文件,但是在让DataContractSerializer工作时遇到了问题。我在看这篇关于这个主题的文章,但我发现了一个错误:

错误10“System.Runtime.Serialization.DataContractSerializer”不包含“Serialize”的定义,并且找不到接受“System.Runtime.Serialization.DataContractSerializer”类型的第一个参数的扩展方法“Serialize”(是否缺少using指令或程序集引用?

我的班级情况如下:

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();
    }
}
公共类ManagementDbContext:DbContext { 公共数据库集远程主机{get;set;} 公共数据库集数据源{get;set;} 公共覆盖int SaveChanges() { 使用(FileStream fs=File.OpenWrite(“ManagementData.xml”)) { XmlDictionaryWriter-writer=XmlDictionaryWriter.CreateTextWriter(fs,Encoding.UTF8); DataContractSerializer srlz=新的DataContractSerializer(typeof(ManagementDbContext)); srlz.Serialize(writer,this); writer.Close();//确保已正确刷新 } 返回base.SaveChanges(); } } 编辑:

好的,结果证明我所遵循的示例代码是错误的,我有错误。行
srlz.Serialize(writer,this)
应该是
srlz.WriteObject(writer,this)
如图所示
此外,我无法序列化DbContext的实现,并且在类上缺少[Serializable]和[DataContract]属性,在成员上缺少[DataMember()。

首先,您需要在ManagementDbContext中使用and属性。第二步,您无法序列化对象,因为它没有标记任何属性


所以我不能序列化我的对象?我怎样才能将其写入文件中呢?@judgeja我只能创建一个简单的对象,例如SimpleDbContext,它具有相同的属性、标记的属性,并且没有从另一个对象继承。并将ManagementDbContext复制到SimpleDbContext。尝试了此操作,但仍然存在相同的问题。。你可以看到新的班级above@judgeja像RemoteHost和DataSource这样的所有类也必须被标记为属性。当你说也被标记为属性时,你的意思是有[DataContract]和[Serializable]属性吗?是的。