我正在尝试将自己的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
答案 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作为外键。