自定义用户表上的SimpleMembership CreateUserAndAccount IDENTITY_INSERT错误

时间:2013-03-01 11:15:34

标签: asp.net-mvc asp.net-mvc-4 simplemembership

我正在尝试将自己的Users表用于简单的方法,并向其中添加一些数据。基于此处的示例 - 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'中为identity列插入显式值。

不确定如何在VS2010中设置此功能,但我不确定为什么我会收到此错误,我应该修复什么。

帮助表示感谢,我正在尝试测试是否可以将旧版asp.net项目移至MVC。

Thansk

2 个答案:

答案 0 :(得分:4)

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

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

感谢。

答案 1 :(得分:0)

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