Comment 2
-
케이아크
2015.05.14 11:48
-
케이아크
2015.05.21 15:18
또는....
기본테이블과 FK 로 연결을 하지 않고 사용하고자 할때
본문의 virtual 로 선언한 부분을 빼시고
ApplicationDbContext 에 public System.Data.Entity.DbSet<UsersInfoes> UsersInfoes { get; set; } 이 부분을 유지하신뒤
아래처럼..
var user = new ApplicationUser { UserName = model.Email, Email = model.Email};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
.
.
using (ApplicationDbContext db = new ApplicationDbContext())
{
UsersInfoes UsersInfoes = new UsersInfoes()
UsersInfoes.aspnetUserKey = user.id;
UsersInfoes.UserName = "입력한 이름";
UsersInfoes.UserNick = "입력한 닉네임";
UsersInfoes.Hp ="입력한휴대폰번호";
db.UsersInfoes.Add(UsersInfoes);
db.SaveChanges();
}
}
이렇게 .. 두 방식 사이의 차이는 코드보시면 아실겁니다.
이 방식은 기본테이블과 FK 로 엮이지 않고 별도의 테이블로 생성되지만 가입할때 기본테이블의 id 를 추가테이블에 동일하게 입력하면서 생성되므로 원래 질문의도와 더 가까울지도 모르겠네요.
꽤 오래전에 등록된 글이라 이미 해결은 하셨을 테고..
답글이 없으니 혹시라도 다른분이 비슷한 질문을 했을때 보시라고 소소한 답변 남겨 봅니다.
(우리나라는 MVC5에 관한 팁들이 아주아주 많이 ....없네요.. ㅜㅜ)
일단 질문하신 내용은 AccountController 에서 해결 할 수 있습니다.
먼저 ApplicationDbContext 에 굳이 public System.Data.Entity.DbSet<UsersInfoes> UsersInfoes { get; set; } 이 부분을 생성하실 필요는 없구요 (이미 ApplicationUser 안에 virtual 로 선언 되어 있으므로 테이블은 생성 됩니다)
그럼 본론으로.. AccountController 에 보면 Register 라는 액션이 있는데요
보시면 유저가 처음 등록 할 때 저장되는 부분이죠.
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
기본적으로 유저 네임과 이메일을 저장하게 되어 있고...
이 안에 본인이 생성하신 UsersInfoes 를 선언 하신 후
원하는 추가 정보를 넣어 주시면 됩니다.
단.. 위에 추가하신 모델에 id가 있는데 그것은 AspNetUsers에 UsersInfoes_Id 로 연결 되는 부분이므로 그대로 두고
따로 컬럼을 하나 만드세요
public string aspnetUserKey {get; set;} 이라고 예를 들겠습니다.
이제..
예를 들어.. 소스를 이렇게 하시면..(빨간색은 기본 생성된 소스에서 추가한 코드)
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, UsersInfoes = new UsersInfoes() };
user.UsersInfoes.aspnetUserKey = user.id;
user.UsersInfoes.UserName = "입력한 이름";
user.UsersInfoes.UserNick = "입력한 닉네임";
user.UsersInfoes.Hp ="입력한휴대폰번호";
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
.
.
.
이렇게 되겠네요..
위 예시처럼 하면 사용자 가입시 새로 생성한 추가 정보 테이블에 추가 입력 내용이 들어가게 되고
UserManager 를 통해 자유롭게 사용 가능 합니다.
누군가는 보고 도움이 되길..-0-;