c# - EF 转换问题

标签 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

最佳答案

newUser 是一个类型为 User 的变量,但它指向内存中原来的 CustomUser

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

要避免这个问题,您需要创建一个用户类型的新对象,并复制其所有属性。您可以使用 AutoMapperValueInjecter自动制作,或手动制作。

另一种解决方案是在您的 EF 模型中配置 CustomUser,使其按预期工作。您没有指定如何定义 EF 模型。

关于c# - EF 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204384/

相关文章:

c - 在 C 中将 Int32 类型转换为 sCplx16 IQ 样本

c# - 我是否违反了 DI 模式规则

c# - 温莎容器。 ASP.NET MVC 应用程序中对象的生命周期

entity-framework - 防止 EF 尝试更新/插入子对象

c++ - 为什么向上转换有效但向下转换会产生编译时错误?

在 C 中将 signed char 转换为 unsigned int

c# - 如何在tabcontrol/tabpages中添加垂直滚动条

c# - 从文本文件读取会创建三个点

c# - EF 模型中的多个数据库模式优先

c# - Entity Framework Include() 强类型