2

我正在尝试使用我自己的用户表来进行简单的记忆,向其中添加一些数据。基于此处的示例 - http://blog.osbornm.com/2010/07/21/using-simplemembership-with-asp.net-webpages/ 我用这个模型创建了一个表:

 [Table("MyUsers")]

公共类 MyUsers

[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public string Gender { get; set; }
public DateTime DOB { get; set; }

我正在初始化它:

  WebSecurity.InitializeDatabaseConnection("MyConnection", "MyUsers", "UserId", "UserName", autoCreateTables: true);

并在注册时致电:

  WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new MyUsers {DOB = DateTime.Now.AddYears(-31),Email = "my@mymail.com",Gender = "Male",UserName = model.UserName});

但是 - 我收到此错误:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“MyUsers”中插入标识列的显式值。

不知道如何在 VS2010 中设置它,但我不知道为什么我什至会收到这个错误,以及我应该修复什么。

感谢帮助,我正在尝试测试是否可以将旧的 asp.net 项目移动到 MVC。

坦斯克

4

2 回答 2

4

发现了我的问题 - 它与 CreateUserAndAccount 相关,我使用了一个匹配表中所有字段的类,包括键。不应该这样。这有效:

 WebSecurity.CreateUserAndAccount(model.UserName, model.Password,new  {Gender="Mal",DOB = DateTime.Now.AddYears(-1),Email="mymy@trtr.com" });

谢谢。

于 2013-03-02T16:20:35.863 回答
0

您所做的是在基本用户表之外构建了一个扩展。因此,该UserId不应是自动递增的列。它将尝试INSERT将基本用户表中的实际 ID 作为外键。

于 2013-03-01T11:47:27.340 回答