将EF(数据库优先)序列化为视图状态
本文关键字:序列化 视图状态 EF 数据库 | 更新日期: 2023-09-27 18:20:47
我在尝试将EF对象存储到视图状态时遇到了一些问题,经过大量的谷歌搜索(通常最终在SO上),最终出现了更多问题。
- 我有一个DB First EF 6实体模型,它具有自动生成的类,其中一个类称为
MyRole
-
然后我有一个DAL来包装对EF对象的访问。。以下是重要部分的摘录
namespace MyApp { public class EFDataAccess : IDisposable { private MyEntities context; public static IEnumerable<MyRole> GetRoles() { IEnumerable<MyRole> oRet = null; using (EFDataAccess oRepo = new EFDataAccess()) { oRet = oRepo.context.Roles.AsEnumerable(); } return oRet; } } }
-
我的ASP.Net页面有以下
ViewState["lstRoles"] = EFDataAccess.GetRoles().ToList();
现在,这里的问题是ASP.Net barfs说它不能添加到视图状态,因为
MyRole
是不可序列化的。 -
因此,根据实体框架:如何在实体框架文章中将模型设置为Serializable,我创建了一个新的类
namespace MyApp { [Serializable] public partial class MyRole { } }
-
到目前为止一切都很好,除了当我现在运行应用程序时,我得到了以下
runtime compilation error
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS0266: Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<MyApp.MyRole> [c:'Windows'Microsoft.NET'Framework'v4.0.30319'mscorlib.dll]' to 'System.Collections.Generic.IEnumerable<MyApp.MyRole> [c:'Windows'Microsoft.NET'Framework'v4.0.30319'mscorlib.dll]'. An explicit conversion exists (are you missing a cast?) Source Error: Line xxxx: using (EFDataAccess oRepo = new EFDataAccess()) Line xxxx: { Line xxxx: oRet = oRepo.context.CallTrackerRoles.AsEnumerable(); *** THIS LINE HIGHLIGHTED RED Line xxxx: } Line xxxx: return oRet;
-
现在,这就是我的困境。正如人们所说,它在同一类型的隐式转换中失败了。
您定义了一个新类,可能在不同的命名空间或不同的程序集中。那个类是有一个部分的partial
。