我在尝试将EF对象存储到viewstate中时遇到了一些问题,经过大量的Google搜索后(通常以SO结尾)最终出现了更多问题。
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
不可序列化。
因此,根据Entity Framework: How to set model as Serializable in Entity Framework文章,我创建了一个新类
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;
现在,这就是我被困住的地方。正如它所说的那样,对同一类型的隐式转换失败了。
答案 0 :(得分:1)
您已经定义了一个新类,可能在不同的命名空间或不同的程序集中。该课程为partial
,其中有一部分。