我有的:
带有数据的数据库并通过以下方式连接到它
public class VMMExtDBContext : DbContext {...}
在这里面完美地工作是这样的:
public DbSet<VirtualMachine> VirtualMachines { get; set; }
现在我需要一个从 MSSMS 完美运行的运行查询:
select SUM(CPUCount), SUM(RAMSizeGB), SUM(PrimaryHDDVolumeGB) from TempVMs where VMCloudID='f51b73b5-fdb3-4af2-956b-b27fccc5e19d'
所以我写了代码:
public QuotaPresenter(VMMExtDBContext db, Guid CloudID)
{
string entitySQL = "select SUM(CPUCount), SUM(RAMSizeGB), SUM(PrimaryHDDVolumeGB) from TempVMs where VMCloudID='"+CloudID.ToString()+"'";
//or = "select SUM(CPUCount), SUM(RAMSizeGB), SUM(PrimaryHDDVolumeGB) from dbo.TempVMs where VMCloudID='"+CloudID.ToString()+"'";
var objectContext = (db as IObjectContextAdapter).ObjectContext;
var query=objectContext.CreateQuery<UsedQuotaValue>(entitySQL);
query.MergeOption = System.Data.Objects.MergeOption.NoTracking;
var QuoteValues=query.ToList(); //<--Exception here
if (QuoteValues.Count > 0) {
//На случай если нет ни одной виртуальной машины - оставляем по нулям
UQV.CPU = QuoteValues[0].CPU;
UQV.RAM = QuoteValues[0].RAM;
UQV.PrimaryHDDGB = QuoteValues[0].PrimaryHDDGB;
}
}
当我运行时出现异常:
[System.Data.EntitySqlException] 'TempVMs' 无法在当前范围或上下文中解析。确保所有引用的变量都在范围内,加载了所需的模式,并且正确地引用了命名空间。接近简单标识符,第 1 行,第 68 列。
我错过了什么?