我有以下用户类别:
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
。
要避免这个问题,您需要创建一个用户类型的新对象,并复制其所有属性。您可以使用 AutoMapper或 ValueInjecter自动制作,或手动制作。
另一种解决方案是在您的 EF 模型中配置 CustomUser
,使其按预期工作。您没有指定如何定义 EF 模型。
关于c# - EF 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204384/