EF的演员问题

时间:2016-02-04 14:59:52

标签: c# entity-framework casting

我有以下用户类:

public class CustomUser : User, IUser<int> {...}
public interface IUser<TKey> {...}

User是从我的edmx(数据库到模型方法)生成的部分类。

我正在尝试向数据库添加新用户,但我收到错误:“无法找到EntityType”MyNamespace.CustomUser“的映射和元数​​据信息。

他添加新用户的代码:

public void CreateUser(CustomUser user)
{
    User newUser = (User)user;
    this.MyEntities.Users.Add(newUser); <-- Line that error blows
    this.MyEntities.SaveChanges();
}

为什么在演员表之后,newUser保持为CustomUser

1 个答案:

答案 0 :(得分:2)

newUserUser类型的变量,但它指向内存中的原始CustomUser

如果您运行newUser.GetType(),您将获得CustomUser

要解决此问题,您需要创建一个user类型的新对象,并复制其所有属性。您可以使用AutoMapperValueInjecter自动创建,也可以手动执行。

另一个解决方案是在EF模型中配置CustomUser,以便它按预期工作。您没有指定如何定义EF模型。