相关疑难解决方法(0)

使用实体框架进行向下转型

我有一个项目,我在EF中定义了Employer一个派生类User.在我的过程中,我创建了一个用户而不知道它最终是否会成为雇主(或其他类型的用户),之后我需要转换它.起初我尝试过(Intellisense表示存在显式转换):

Employer e = (Employer) GetUser();
Run Code Online (Sandbox Code Playgroud)

但在运行时我得到了:

Unable to cast object of type 'System.Data.Entity.DynamicProxies.User_7B...0D' to type 'Employer'.
Run Code Online (Sandbox Code Playgroud)

所以我试着写一个转换器:

public partial class User
{
    public static explicit operator Employer(User u)
    {
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

Error   21  'User.explicit operator Employer(User)': user-defined
conversions to or from a derived class are not allowed
C:\Users\..\Documents\Visual Studio 2010\Projects\..\Website\Models\EF.Custom.cs
Run Code Online (Sandbox Code Playgroud)

精细.然后我重载了构造函数,Employer如下所示:

public partial class Employer
{
    public Employer(User u)
    {
        this.Id = u.Id;
        this.Claims = u.Claims;
        // etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

并认为我可以这样做:

Employer e = …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework casting downcast asp.net-mvc-3

3
推荐指数
1
解决办法
2847
查看次数

标签 统计

asp.net-mvc-3 ×1

c# ×1

casting ×1

downcast ×1

entity-framework ×1