我正在构建一个数据库应用程序。我在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;
应用程序只是继续运行,但是sub中的其余代码以及调用该sub的子代码中的任何代码都被跳过。
我的所有其他数据对象和数据访问模型都可以正常工作。我检查了数据库以确保存在适当的记录。我尝试用以下所有内容替换第一个语句:
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文件夹并重建了它。我还检查了数据对象模型和地图,一切都正确匹配。任何帮助将不胜感激。
答案 0 :(得分:1)
我设法解决了这个问题,虽然我仍然不知道是什么原因导致了这个问题。我删除了整个模型文件夹,并让Entity Framework插件重新创建了所有模型和映射,然后我从头开始重新完成所有自定义对象属性。这很乏味(这是我希望避免的),但它确实有效。
感谢大家的建议,对不起,我们无法弄清楚发生了什么,这对其他人都有用。