1
protected void ButtonAddDatabase_Click(object sender, EventArgs e)
{
    using (KnowItCvdbEntities db = new KnowItCvdbEntities())
    {
        SPWeb theSite = SPControl.GetContextWeb(Context);
        SPUser theUser = theSite.CurrentUser;
        string strUserName = theUser.LoginName;

        var theEmplDbSkill = (
                        from p
                        in db.EMPLOYEES
                        where p.username == strUserName
                        select p).FirstOrDefault();

        _emp = theEmplDbSkill;

        if (_emp != null)
        {                        
            foreach (var vItem in ListBoxDatabases.Items)
            {
                if (ValueAlreadyInListDb(vItem))
                    return;
            }                        

      //Get existing skilllevel from db
      var skillLevel = (from sL in db.TECHNICAL_SKILL_LEVEL 
                        where sL.technical_skill_level_id == Convert.ToInt32(DropDownListDB.SelectedValue)
                        select sL).FirstOrDefault();

       //Get existing skillvalue from db
        var skillValue = (from sV in db.TECHNICAL_SKILLS
                         where sV.technical_skill_id == Convert.ToInt32(RadioButtonListDatabase.SelectedValue)
                         select sV).FirstOrDefault();

       //Adding to employees_technical_skills table
       var empSkill = new EMPLOYEES_TECHNICAL_SKILLS
       {
            technical_skill_id = Convert.ToInt32(DropDownListDB.SelectedItem.Value),
            TECHNICAL_SKILLS = skillValue,
            technical_skill_level_id = Convert.ToInt32(RadioButtonListDatabase.SelectedItem.Value)
            TECHNICAL_SKILL_LEVEL = skillLevel,
            employee_id = _emp.employee_id
        }

            _emp.EMPLOYEES_TECHNICAL_SKILLS_Add(empSkill);
            db.SaveChanges();

            _emp.EMPLOYEES_TECHNICAL_SKILLS.Add(empSkill);
            db.SaveChanges();

        }                
    }
}    

現在、次の表の作成に取り組んでいます。 ここに画像の説明を入力

これは私のテーブルです: ここに画像の説明を入力

しかし、私はエラーが発生し続けます:

LINQ to Entities はメソッド 'Int32 ToInt32(System.String)' メソッドを認識せず、このメソッドはストア式に変換できません。

よろしく、クリスチャン。

4

1 に答える 1

0

エンティティ フレームワークがConvert.ToInt32()SQL 式に変換できないようです。最初にラジオボタンとドロップダウンの値をintメモリ内に変換してから、クエリに渡します。

int TechnicalSkillLevelID = int.Parse(DropDownListDB.SelectedValue);
int TechnicalSkillID = int.Parse(RadioButtonListDatabase.SelectedValue);
//Get existing skilllevel from db
      var skillLevel = (from sL in db.TECHNICAL_SKILL_LEVEL 
                        where sL.technical_skill_level_id == TechnicalSkillLevelID)
                        select sL).FirstOrDefault();

       //Get existing skillvalue from db
        var skillValue = (from sV in db.TECHNICAL_SKILLS
                         where sV.technical_skill_id == TechnicalSkillID)
                         select sV).FirstOrDefault();

       //Adding to employees_technical_skills table
       var empSkill = new EMPLOYEES_TECHNICAL_SKILLS
       {
            technical_skill_id = skillValue.technical_skill_id,
            TECHNICAL_SKILLS = skillValue,
            technical_skill_level_id = skillLevel.technical_skill_level_id)
            TECHNICAL_SKILL_LEVEL = skillLevel,
            employee_id = _emp.employee_id
        }

また、すでにスキル レベルとスキル値を引き戻しているため、ドロップ ダウン/ラジオ ボタン リストから値を取得する必要はありません。skillValueskillLevelオブジェクトを使用するだけです。

于 2013-03-28T17:42:00.503 に答える