我正在尝试使用WebSecurity.CreateUserAndAccount
创建一个用户,而我在插入具有'Client'之类的对象'User'时遇到了问题。
我的代码:
var client = new UserRepository(context).GetByEmail(email);
token = WebSecurity.CreateUserAndAccount(
email,
password,
new
{
name,
email,
isAdmin,
client
});
此代码抛出此异常:
从对象类型System.Data.Entity.DynamicProxies.Client_3003777381BB2D4BFAC2DAB15BF164994D9EE8AB84E8AF4BED6DC161613271BB到已知的托管提供程序本机类型不存在映射。
我的模特:
public class Client
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public virtual List<Monitoring> Monitoring { get; set; }
public virtual List<User> Users { get; set; }
}
public class User
{
[Key]
public int id { get; set; }
public string email { get; set; }
public string name { get; set; }
public bool IsAdmin { get; set; }
public virtual Client Client { get; set; }
}
答案 0 :(得分:1)
WebSecurity.CreateUserAndAccount()
只能处理简单类型(最多为字符串),因此无法映射您的类引用。您可以执行以下操作:
public class User
{
[Key]
public int id { get; set; }
public string email { get; set; }
public string name { get; set; }
public bool IsAdmin { get; set; }
[ForeignKey("Client")]
public int ClientId;
public virtual Client Client { get; set; }
}
现在
token = WebSecurity.CreateUserAndAccount(
email,
password,
new
{
name,
email,
IsAdmin = isAdmin,
ClientId = client.Id
});
您应该检查数据库中ClientId字段的名称。它也可以命名为Client_Id
。在这种情况下,您应该相应地更新代码。