将Linq中的附加属性添加到sql类中

本文关键字:添加 sql 类中 属性 Linq | 更新日期: 2023-09-27 17:58:50

为了检索数据,我在SQL表的Linq中添加了PropIndustryNM属性。它运行良好。

但当我试图将数据插入表中时,会发生一个错误:

列名"PropIndustriyNM"无效

现在请给出解决方案,我能做什么?我两者都需要。

我是林克的初学者。所以请给我一个我能理解的简单的答案。

在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()将数据插入表时它抛出错误,如无效列名"PropIndustriyNm"

我不知道我犯了什么错。

将Linq中的附加属性添加到sql类中

解决方案1。尝试从model(dbml)中删除所有表,然后再次从服务器资源管理器中将其拖放到模型中,然后重新构建它。

解决方案2.您已经从model(dbml)中的表中创建了属性(PropIndustriyNM),但实际上并不存在于数据库中的实际表中。

只需移除该PropIndustryNM,如果您想在dbml中使用table(BIODATA_MA),则可以从模型中继承该table。尝试创建一个类。

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);
}

这个更新不是答案,而是一个关于好的建议用CCD_ 8进行编码。试着像这个一样编码

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);
 };

我不确定这些错误发生在哪里。你能看到你的代码吗?你在哪里申报了"PropIndustriyNM"财产?在DB中有这样的列吗?真的可用吗?

为了您的参考,您也可以查看此链接,并尝试撰写您的

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

可能共享代码,我们尝试并修复它。!

应该通过更新模型中的表来修复它。