Win7 アプリで、EF の EntityClient を使用して SqlServerCe 3.5 (IPManager_DBEntities) にアクセスし、「Channels」の EntitySetMapping 名で、「Channel」と呼ばれる ADO.NET データベース テーブルのいくつかのフィールドを更新しようとしています。
VS 2010 IDE を使用すると、コードは正常にコンパイルされ、Intellisense に問題はありません。チャネル データテーブルの形式は、行のさまざまなフィールド (チャネルの「番号」で選択) をコードから渡された情報で更新する必要があるため、下部で参照されますが、簡単にするために表示されていません。過去数日間、Google で検索しても、型キャストのジレンマが解決されませんでした。LINQ を使用すると、次のランタイム例外が発生します。
「型 'System.Data.Objects.ObjectQuery`1 [Manager.Data.Channel]' のオブジェクトを型 'Manager.Data.Channel' にキャストできません」.
// Update channel status with information parsed from the data packet.
using (IPManager_DBEntities context = new IPManager_DBEntities())
{
Channel thisChannelRow = (Channel)(from CE
in context.Channels
where CE. Number == int.Parse(IDLine[2])
select CE);
// Throwing exception after setting up this query:
// "Unable to cast object of type 'System.Data.Objects.ObjectQuery`1
// [Manager.Data.Channel]' to type 'Manager.Data.Channel'"
// During debug sessions, "thisChannelRow" is null as a result.
MessageBox.Show("thisChannelRow. Channel = " + thisChannelRow.Number );
ThisChannel.StatusID = int.Parse(IDLine[5]);
ThisChannel.Cycle = int.Parse(IDLine[4]);
ThisChannel.Modified = DateTime.Now;
context.SaveChanges();
}
誰かがこの苦境を乗り越えるための解決策を持っていることを願っています.