asp.net mvc4, C# 및 Entity Framework 5를 사용하고 있습니다. 사용자를 만들고 동시에 사용자에게 역할을 할당하려고합니다. 간단한 회원 (데이터베이스 첫 번째 방법),하지만 Roles.AddUserToRole("nuser", "Admin");
SimpleMembership의 AddUserToRole을 사용하는 중 오류 : INSERT 문이 FOREIGN KEY 제약 조건과 충돌했습니다.
내 코드입니다 : -에서 FOREIGN KEY 제약 "FK_webpages_UsersInRoles_webpages_Roles"와 충돌 INSERT 문을 다음과 같은 오류가 발생. 충돌이 데이터베이스 "DbClick2Eat", 테이블 "dbo.webpages_Roles", 열 'RoleId'에서 발생했습니다. 명세서가 종료되었습니다. 여기
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateUserByAdmin(RegisterModel register, string role)
{
try
{
if (Roles.RoleExists(role))
{
var model = register ?? new RegisterModel();
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
if (WebSecurity.UserExists(model.UserName))
Roles.AddUserToRole("admin1", "Admin");
}
else
ModelState.AddModelError("NoRole", "Please select a role.");
var roles = Roles.GetAllRoles().ToList();
ViewBag.DeliveryArea = new SelectList(roles.Select(x => new { Value = x, Text = x }), "Value", "Text");
return View();
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", AccountController.ErrorCodeToString(e.StatusCode));
}
return View();
}
DB 스키마
CREATE TABLE [dbo].[webpages_Roles](
[RoleId] [int] IDENTITY(1,1) NOT NULL,
[RoleName] [nvarchar](256) NOT NULL,
CONSTRAINT [PK_webpages_Roles] PRIMARY KEY CLUSTERED
(
[RoleId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[webpages_UsersInRoles](
[RoleId] [int] NOT NULL,
[UserId] [int] NOT NULL,
CONSTRAINT [PK_webpages_UsersInRoles] PRIMARY KEY NONCLUSTERED
(
[RoleId] ASC,
[UserId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[webpages_UsersInRoles] WITH CHECK ADD CONSTRAINT [FK_webpages_UsersInRoles_UserProfile] FOREIGN KEY([UserId])
REFERENCES [dbo].[UserProfile] ([UserId])
GO
ALTER TABLE [dbo].[webpages_UsersInRoles] CHECK CONSTRAINT [FK_webpages_UsersInRoles_UserProfile]
GO
ALTER TABLE [dbo].[webpages_UsersInRoles] WITH CHECK ADD CONSTRAINT [FK_webpages_UsersInRoles_webpages_Roles] FOREIGN KEY([RoleId])
REFERENCES [dbo].[webpages_Roles] ([RoleId])
GO
ALTER TABLE [dbo].[webpages_UsersInRoles] CHECK CONSTRAINT [FK_webpages_UsersInRoles_webpages_Roles]
-> "관리자는"역할 이름
,역할 ID = 1, RoleName = 관리자
"관리자"역할을 고칠 수 줬음에 존재 ... 필요는 줄에
자세한 내용은 역할 테이블 (DB Scheme 및 Admin 레코드)을 제공해 주시겠습니까? –
@stefchri, 답장을 보내 주셔서 감사합니다. 나는 DB 스키마를 추가했다. – NeoDeveloper