0

PropIndustryNMデータ取得の目的で、Linq-to-SQL テーブルに追加プロパティを追加しました。それはうまくいっています。

しかし、テーブルにデータを挿入しようとすると、エラーが発生します:

無効な列名 'PropIndustryNM'

解決策を教えてください。両方必要です。

そして、私はLinqの初心者です。だから、私が理解できる簡単な答えを提案してください。

プロパティを dbml ファイルに追加する

これは、このプロパティに値を設定するコードです。

    List<BIODATA_MA> list = new List<BIODATA_MA>();

    for (int i = 0; i < result.Count(); i++)
    {
        BIODATA_MA c = new BIODATA_MA();
        INDUSTRY_MA im = new INDUSTRY_MA();

        c.ACCOUNT_ID = result.ElementAt(i).ACCOUNT_ID;
        c.FULL_NAME = result.ElementAt(i).FULL_NAME;
        c.RESUME_HEADELINE = result.ElementAt(i).RESUME_HEADELINE;
        c.KEY_SKILL = result.ElementAt(i).KEY_SKILL;
        c.TOTAL_EXPERIENCE = result.ElementAt(i).TOTAL_EXPERIENCE;
        c.PropIndustryNm = result.ElementAt(i).INDUSTRY;
        c.PropFunctionalNm = result.ElementAt(i).FUNCTIONAL_AREA;
        c.PropGraduNm = result.ElementAt(i).GRADU;
        c.PropPostGraduNm = result.ElementAt(i).POST_GRADU;
        //  c.TRANS_DATE = result.ElementAt(i).TRANS_DATE;
        list.Add(c);
    }

その仕事はうまくいきます。しかし挿入時

        BIODATA_MA objBio = new BIODATA_MA();


        objBio.INDUSTRY_ID = int.Parse(ddlIndustry.SelectedItem.Value);
        objBio.FUNCTIONAL_AREA_ID = int.Parse(ddlFunctionalArea.SelectedItem.Value);

        if (ddlGradu.SelectedIndex > 0) objBio.GRADU_ID = int.Parse(ddlGradu.SelectedItem.Value); else objBio.GRADU_ID = 0;

        if (ddlPostGradu.SelectedIndex > 0) objBio.POST_GRADU_ID = int.Parse(ddlPostGradu.SelectedItem.Value); else objBio.POST_GRADU_ID = 0;

        if (ddlPhd.SelectedIndex > 0) objBio.PHD = ddlPhd.SelectedItem.Value;

        objBio.COURSE = txtCourse.Text;



        DCBiodataMasDataContext db = new DCBiodataMasDataContext();
        db.BIODATA_MAs.InsertOnSubmit(objBio);

        try
        {
            db.SubmitChanges();
            lbMsg.Text = "added Successfully";
            clearAll();
        }
        catch (Exception)
        {
            lbMsg.Text = "not added.";
            throw;
        }

InsertOnSubmit() を使用してテーブルにデータを挿入すると、Invalid column Name 'PropIndustryNm' のようなエラーがスローされます

何が私の間違いなのかわかりません。

4

3 に答える 3

0

これらのエラーがどこで発生したかわかりません。この「PropIndustryNM」プロパティを宣言したコードを見ることはできますか? DBにReally availableのような列はありますか?

参考までに、このリンクを確認して、自分で書いてみることもできます。

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

http://www.codeproject.com/Articles/215712/LINQ-to-SQL-Basic-Concepts-and-Features

コードを共有する可能性があります。修正を試みます。

于 2013-02-13T06:27:39.620 に答える
0

解決策 1.からすべてのテーブルを削除しmodel(dbml)、サーバー エクスプローラーからモデルに再度ドラッグ アンド ドロップして再構築してみてください。

解決策 2.のテーブルからプロパティ (PropIndustryNM) を作成しましたmodel(dbml)が、データベースの実際のテーブルには実際には存在しません。

それを削除するだけです。 inPropIndustryNMを使用する場合は、モデルから継承できます。クラスを作成してみてください。table(BIODATA_MA)dbmltable

public class BIODATA_MA_Entity : BIODATA_MA
{
   public string PropIndustryNM {get; set;}
}

今、あなたはのように使うことができます

List<BIODATA_MA_Entity> list = new List<BIODATA_MA_Entity>();

for (int i = 0; i < result.Count(); i++)
{
    BIODATA_MA c = new BIODATA_MA();
    INDUSTRY_MA im = new INDUSTRY_MA();

    c.ACCOUNT_ID = result.ElementAt(i).ACCOUNT_ID;
    c.FULL_NAME = result.ElementAt(i).FULL_NAME;
    c.RESUME_HEADELINE = result.ElementAt(i).RESUME_HEADELINE;
    c.KEY_SKILL = result.ElementAt(i).KEY_SKILL;
    c.TOTAL_EXPERIENCE = result.ElementAt(i).TOTAL_EXPERIENCE;
    c.PropIndustryNm = result.ElementAt(i).INDUSTRY;
    c.PropFunctionalNm = result.ElementAt(i).FUNCTIONAL_AREA;
    c.PropGraduNm = result.ElementAt(i).GRADU;
    c.PropPostGraduNm = result.ElementAt(i).POST_GRADU;
    //  c.TRANS_DATE = result.ElementAt(i).TRANS_DATE;
    list.Add(c);
}

この更新は答えではありませんが、class. このようにコーディングしてみてください

BIODATA_MA objBio = new BIODATA_MA()
 {
     INDUSTRY_ID = int.Parse(ddlIndustry.SelectedItem.Value);
     FUNCTIONAL_AREA_ID = int.Parse(ddlFunctionalArea.SelectedItem.Value);
     //others  stuff
 };

 using (var db = new  DCBiodataMasDataContext())
 {
    db.BIODATA_MAs.InsertOnSubmit(objBio);
 };
于 2013-02-13T06:48:54.373 に答える
0

モデルからテーブルを更新することで修正する必要があります。

于 2013-02-13T07:03:06.150 に答える