【问题标题】:DataContractSerializer not working for MVC DBContext ObjectDataContractSerializer 不适用于 MVC DBContext 对象
【发布时间】:2013-03-25 10:46:09
【问题描述】:

我正在尝试将实现 DbContext 的对象写入文件,但是我无法让 DataContractSerializer 工作。我正在查看有关主题 http://www.riggshill.com/home/node/24 的帖子,但我收到了一个错误:

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] 属性,以及 Daniil 指出的成员上的 [DataMember()]。

【问题讨论】:

    标签: c# asp.net-mvc serialization


    【解决方案1】:

    首先 - 您需要在 ManagementDbContext 中使用 SerializableDataContract 属性。其次,您无法序列化您的对象,因为 DbContext 没有标记任何属性。

    Serialization 的基本操作

    【讨论】:

    • 所以我根本无法序列化我的对象?我怎样才能将它写入文件呢?
    • @judgeja 我只能建议制作一个简单的对象,例如具有相同属性、标记属性且不从另一个对象继承的 SimpleDbContext。并将 ManagementDbContext 复制到 SimpleDbContext。
    • 试过了,但还是有同样的问题..你可以看到上面的新类
    • @judgeja RemoteHost 和 DataSource 等所有类也必须标记属性。
    • 当你说被标记属性时,你的意思是有 [DataContract] 和 [Serializable] 属性吗?他们有。
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2015-01-06
    相关资源
    最近更新 更多