我的项目使用MVC 4 C#LINQ to SQL。方法没有支持转换到SQL
由于某些原因,用于为我的某个属性获取数据的方法提供了“没有支持的SQL转换”错误。获取此数据的方法与同一查询中另一个属性的方法几乎完全相同,只是可以在未获取小数的字符串中使用该字符串。
精确的错误代码:
Method 'System.Decimal GetModelDifficulty(System.String)' has no supported translation to SQL.
我试着在下面的代码许多变化,但我总是得到同样的错误如上:
public List<ProductionSchedule> GetBaseProductionSchedule(DateTime selectedDate)
{
var spaList = (from x in db.WO010032s
join y in db.MOP1042s on x.MANUFACTUREORDER_I equals y.MANUFACTUREORDER_I into x_y
where x.STRTDATE == selectedDate && (x.MANUFACTUREORDERST_I == 2 || x.MANUFACTUREORDERST_I == 3)
from y in x_y.DefaultIfEmpty()
select new ProductionSchedule()
{
MO = x.MANUFACTUREORDER_I,
BOMNAME = x.BOMNAME_I,
SpaModel = x.ITEMNMBR,
MoldType = GetMoldType(x.ITEMNMBR.Trim()),
SerialNumber = y.SERLNMBR,
Difficulty = GetModelDifficulty(x.ITEMNMBR.Trim())
}).OrderByDescending(x => x.Difficulty).ToList();
return spaList;
}
public string GetMoldType(string model)
{
return db.SkuModelDatas.Where(x => x.Value == model).Select(x => x.MoldType).FirstOrDefault();
}
public decimal GetModelDifficulty(string model)
{
return (decimal)db.SkuModelDatas.Where(x => x.Value == model).Select(x => x.Difficulty).FirstOrDefault();
}
奇怪 - 我相信这两个('GetModelDifficulty'和'GetMoldType')应该给你同样的错误,因为方法调用不能被转换为SQL ... –
嗯奇怪我已经用了很多次之前我相信。此外,我测试了GetModelDifficulty方法的注释,并将其设置为0,即使GetMoldType方法保持不变,查询也可以毫无问题地执行。 –
“SkuMOdelData.Difficulty”的类型是什么?你为什么要把它转换成十进制? – Moho