C# 在实体框架中保存ViewState时出错

C# 在实体框架中保存ViewState时出错,c#,.net,asp.net,entity-framework-4,C#,.net,Asp.net,Entity Framework 4,我在.NET实体框架4.0中工作 我正在使用viewstate保存实体。我也序列化了那个实体。但当我尝试将数据保存到viewstate时,出现以下错误: Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Error serializing value 'System.Collections.Generic.List`1[Pc.PrecisionCare2.ModelTypes

我在.NET实体框架4.0中工作 我正在使用viewstate保存实体。我也序列化了那个实体。但当我尝试将数据保存到viewstate时,出现以下错误:

Microsoft JScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException: Error serializing value 'System.Collections.Generic.List`1[Pc.PrecisionCare2.ModelTypes.Medication]' of type 'System.Collections.Generic.List`1[[Pc.PrecisionCare2.ModelTypes.Medication, PrecisionCare2ModelTypes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].'

也许这对任何人都有帮助。我想自己在Viewstate中序列化一个实体,但找不到好的解决方案(XMLSerialization、字节序列化、DataContract)。我发现我可以“扩展”代码生成的类(它们是部分的),并使其可序列化

例如,这是一个.net代码生成的实体:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace OAuthServerBroker.EF
{
    using System;
    using System.Collections.Generic;

    public partial class ResourceOwner
    {
        public ResourceOwner()
        {
            this.Grant = new HashSet<Grant>();
        }

        public System.Guid ResourceOwner_ID { get; set; }
        public string ResourceOwner_Username { get; set; }

        public virtual ICollection<Grant> Grant { get; set; }
    }
}

希望这可能会帮助任何人,因为这是一个老帖子:(.

是否可以看到更多的代码?我还可以问一下为什么使用Viewstate而不是Session?这取决于您的要求,但我问的原因是因为我确信您已经知道这一点,但是Viewstate的生命范围在当前页面中,这意味着当您移动到另一页面时,Viewstate将自动销毁。Session但是,n对象存储在web服务器的内存中,因此在会话过期、应用程序会话终止或在您的代码中手动销毁之前,它对任何页面都可用。我正在对当前页面使用它。问题是,我的实体也包含另一个实体。我没有序列化包含的实体这就是发生此错误的原因。我序列化了包含的实体,现在一切正常。
using System;

namespace OAuthServerBroker.EF
{
    [Serializable]
    public partial class ResourceOwner
    {
        public EntityState State { get; set; } //can even put into new properties
    }
}