0

我正在构建一个数据库应用程序。我在 SSMS 中创建了表,并使用 VS2012 的 EntityFramework NuGet 插件来创建我的数据对象。到目前为止,一切都运行良好。当我尝试为一个特定的数据对象编写 LINQ 语句时,sub 只会在 LINQ 语句处退出。在以下代码中,db 是我的数据库上下文:

private void FillPayRate()
{
    var payRate = db.PayRates.SingleOrDefault(p => p.AgeGroupID == m_ageGroupID &&
    p.SystemID == m_systemID && p.PositionID == m_positionID);
    if (payRate != null)
        txtPayRate.Text = payRate.Rate.ToString("0.00");
    else
        txtPayRate.Text = string.Empty;
}

当程序运行该子程序时,它会在第一条语句处退出。没有例外,没有错误,没有什么。就好像该语句被解释为return;应用程序只是继续运行,但子程序中的其余代码以及子程序中调用该子程序的任何代码都被跳过。

我所有的其他数据对象和数据访问模型都工作得很好。我检查了数据库以确保存在适当的记录。我尝试用以下所有内容替换第一个语句:

var payRate = (from t in db.PayRates
               where t.AgeGroupID == m_ageGroupID &&
                     t.SystemID == m_systemID &&
                     t.PositionID == m_positionID
               select t).FirstOrDefault();

var payRate = db.PayRates.SingleOrDefault(p => p.PayRateID == 1);

var payRate = db.PayRates.ToArray();

var payRate = db.PayRates.FirstOrDefault();

每个语句产生相同的行为。

我已经完全删除了项目 bin 和 obj 文件夹并重建了它。我还检查了数据对象模型和地图,一切都正确匹配。任何帮助将不胜感激。

4

1 回答 1

1

我设法解决了这个问题,尽管我仍然不知道是什么导致了这个问题。我删除了整个模型文件夹并让实体框架插件重新创建了所有模型和地图,然后我从头开始重新创建了所有自定义对象属性。这很乏味(这是我希望避免的),但它奏效了。

谢谢大家的建议,很抱歉我们无法弄清楚发生了什么,以便这对其他人有用。

于 2013-11-11T21:15:40.510 回答