2
次の定義と私はEFを使用しています
:はどうすれば克服しない簡単なため、例外を「...タイプの一定の値を作成できません」WHERE文の
public class StoredFile
{
public int StoredFileId { get; set; }
public HashCode HashCode { get; set; }
public string LocalName { get; set; }
//and some more fields here...
}
と
[ComplexType]
public class HashCode
{
public Byte [] ValueArr {get; set;}
public override bool Equals(object o) {...}
//some more methods to manipulate hash codes
}
は私が動作するように次のクエリを取得しようとしています:
public bool TryGetFileInfo(MachineSafeDbDataContext dataContext, HashCode hash, out StoredFile fileInfo)
{
var matches = from curr in dataContext.StoredFiles where (hash.Equals(curr.HashCode)) select curr;
if (matches.Count() == 0)
{
fileInfo = null;
return false;
}
fileInfo = matches.First();
return true;
}
は、しかし、私は「できませんが、タイプの一定の値を作成するために取得します。 .. "例外です。 LINQは、上記のWHEREステートメントのSQLへの変換を見つけることができないと思います。
私は以下の質問を承知しています:Entity Framework - "Unable to create a constant value of type..." exception、およびMicrosoftの次のページ:Known Issues and Considerations in LINQ to Entities。しかし、私はまだそのハッシュコードに基づいて私のDBからファイルを選択したいと思います。
ありがとう、
編集:私はL2E制限を超えているはずです。このthreadには良いポインタとリンクがあります。
感謝を!私はそれがバイト[](あなたは等号をオーバーライドする必要があります)で動作しないので、==は動作しませんでした。 – OSH
L2Eがそれを処理します。これは、それがSQL TIMESTAMPにマップされるためです。 –