私が持っているもの:
データを含む DB とそれへの接続
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 列目。
私は何が欠けていますか?