【问题标题】:Add additional property in Linq to sql class将 Linq 中的附加属性添加到 sql 类
【发布时间】:2013-02-13 06:16:17
【问题描述】:

我在 Linq-to-SQL 表中添加了 PropIndustryNM 属性以用于数据检索。它工作正常。

但是当我尝试向表中插入数据时,会发生错误:

列名“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' 的错误

我不知道我的错误是什么。

【问题讨论】:

  • 在表中插入新字段后是否更新了 DBML?

标签: c# linq-to-sql


【解决方案1】:

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

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

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

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

现在,你可以使用like

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

【讨论】:

  • 我添加了属性,不想添加到表中
  • 但现在我遇到了麻烦。该怎么办??
【解决方案2】:

我不确定这些错误发生在哪里。 是否可以看到您声明此“PropIndustryNM”属性的代码? 在 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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      相关资源
      最近更新 更多