3
LINQ to SQLステートメントを実行すると、次のエラーが発生します。マテリアライズド 'System.String'タイプから 'System.Guid 'タイプは無効です。LINQ where句は、比較にGUIDのみが含まれていてもstringからGuidにキャスト例外をスローします
例外は、この行で発生:
IList<DocumentData> dds = hcDbContext.DocumentDatas.Where(d => fileDataSyncIds.Contains(d.FileDataSyncId)).ToList();
d.FileDataSyncId
はGuid
とfileDataSyncIds
タイプIList<Guid>
あります。
エラーがどこから来ているのかわからないので、文字列はありません。
これはコードです:
DocumentData zipFile = new DocumentData();
IList<Guid> fileDataSyncIds = hcDbContext.Documents.Where(d => d.EventId == eventId && d.DocumentOwnerTeamId == teamId).Select(d => d.FileDataSyncId).ToList();
//Exception on next line
IList<DocumentData> dds = hcDbContext.DocumentDatas.Where(d => fileDataSyncIds.Contains(d.FileDataSyncId)).ToList();
using (var memoryStream = new MemoryStream()) {
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) {
foreach (var dd in dds) {
var docFile = archive.CreateEntry(dd.Filename);
using (var entryStream = docFile.Open())
using (var streamWriter = new StreamWriter(entryStream)) {
streamWriter.Write(dd.FileData);
}
}
}
zipFile.Filename = "Event" + eventId.ToString() + "_Team" + teamId + "_Documents.zip";
zipFile.FileData = memoryStream.ToArray();
}
return zipFile;
'DocumentDatas'テーブル定義の' FileDataSyncId'の型をチェックし、 'String' /' varchar(...) 'ではなく' Guid'/'uniqueidentifier'であることを確認してください。 – dasblinkenlight
@dasblinkenlight良いキャッチ。テーブルの 'nvarchar(max)'から 'uniqueidentifier'に更新されていませんでした。それを答えに変えれば、それは正しいとマークします。 – Legion