2016-08-22 15 views
0

asp.netのアイデンティティ、複数のテーブルを接続するASP.NETのIDで

AspNetUsersテーブルid

私は別のテーブル名Staff

を作成し、私はスタッフのテーブルの列Staff_IDAspNetUsersidで両方のテーブルをリンクします

(どちらのテーブルもnvarchar(128))

私は新しいレコードを作成するときに、私はVisual Studioで

をスタッフをCRUDは、Staff_ID分野では、それは私にドロップダウンリストでAspNetUserのユーザーの完全なリストを示しています。

私はこのドロップダウンリストを希望しません。

ログインしたユーザーにレコードを保存します。 (私はリストから選択する必要はありません)

// POST: Staffs/Create 
// To protect from overposting attacks, please enable the specific properties you want to bind to, for 
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "Staff_ID,First_Name,Designation,Department,Employment_Type,Clinic_ID,Title,Middle_Name,Last_Name,DOB,Gender,Marital_Status,Religion,CNIC,Nationality,Hire_Date,Employment_Status,Address,City,Country,Email,Contact_Number,Education,Salary,Leave_Avail,Leave_Details,Loan_Details")] Staff staff) 
{ 
    if (ModelState.IsValid) 
    { 
     //db.Staffs.Add(staff); 
     //db.SaveChanges(); 
     //return RedirectToAction("Index"); 
     staff.Staff_ID = User.Identity.GetUserId(); 
     db.Staffs.Add(staff); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 

    ViewBag.Staff_ID = new SelectList(db.AspNetUsers, "Id", "ClinicName", staff.Staff_ID); 
    ViewBag.Country = new SelectList(db.Countries, "Country_ID", "Country_Name", staff.Country); 
    return View(staff); 
} 

マイビュー:

<div class="form-group"> 
    @Html.LabelFor(model => model.Staff_ID, "Staff_ID", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("Staff_ID", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Staff_ID, "", new { @class = "text-danger" }) 
    </div> 
</div> 

答えて

0

まず、それは多くの1つの足場のちょうどデフォルトの動作です。あなたは足場のコードを使用する必要はありません、実際には、あなたはしないように奨励されています。第二に、これを1対多のものとしてモデル化しました。これは明らかに正しくありません。 「ユーザー」は「スタッフ」です。第三に、それは、これが完全に間違ってモデル化されたという最初の手がかりでなければなりません。そのタイプの関係は継承を意味します。だから、StaffApplicationUserから継承する必要があります。これは単により特定の種類の「ユーザー」です。

アイデンティティが存在する全理由は、このレベルの拡張を提供することです。そうしないと、ASP.NETメンバーシップのプロファイルモデルに固執することができます。

+0

私はそれを得たので、あなたはどんな解決策を提案することができますか? –

+0

これは1:1の関係です –

関連する問題