1

tbleducation と tbleemployee の 2 つのテーブルがあります。tbleemployee テーブルには、employeeID、employeeName などのフィールドがあります。また、tbleducation には、Id、employeeID などのフィールドがあります。

tbleducation に挿入できるように、tbleemployee テーブルから employeeName を指定して employeeID を選択するドロップダウン リストを作成したいと考えています。私は次のようにコードを書きました:

モデル

public class UserModels
{

    public string EmployeeName { get; set; }
    public int EmployeeCode { get; set; }
    public IEnumerable<SelectListItem> Employee { set; get; }
}

コントローラ

[HttpPost]
public ActionResult Education(FormCollection edu)
{
    tblEmployee_Education education = new tblEmployee_Education();
    education.EmployeeID = Convert.ToInt32(edu["EmployeeName"].ToString());
    education.Duration = edu["Duration"].ToString();
    education.Certificate = edu["Certificate"].ToString();
    education.Country = edu["Country"].ToString();
    education.SchoolName = edu["SchoolName"].ToString();
    education.Major = edu["Major"].ToString();
    education.SubDescript = edu["SubDescript"].ToString();
    context.AddTotblEmployee_Education(education);
    context.SaveChanges();
    return View();
}

意見

<%= Html.DropDownListFor(x => x.EmployeeName, Model.Employee, "select EmployeeName")%> 

挿入しようとすると、次のエラー メッセージが表示されました。

「INSERT ステートメントが FOREIGN KEY 制約 FK_tblEmployee_Education_tblEmployee_Employee と競合しました」。データベース「MP_DBS_old」、テーブル「dbo.tblEmployee_Employee」、列「コード」で競合が発生しました。ステートメントは終了されました。"

dropdownlist の値が文字列であり、データベースが整数 (employeeID) を必要とするため、このエラーが発生したことはわかっています。私は本当にそれを修正する方法がわかりません。誰でも私を助けてください!

4

1 に答える 1

1

EmployeeIDの代わりにEmployeeNameを挿入しようとしているため、このエラーが発生します。

Html.DropDownListFor(x => x.EmployeeName、Model.Employee、 "select EmployeeName")%>:エラー

EmployeeNameintdropdowmlistにデータを入力しています。正しい行はこれになります

Html.DropDownListFor(x => x.EmployeeID , Model.Employee, "select EmployeeName")%> 

次に、この行を修正する必要があります。

    education.EmployeeID =  Convert.ToInt32(edu["EmployeeID "].ToString())

これはあなたの問題を解決すると思います

于 2012-08-02T04:50:01.600 に答える