私はLinSにEntityを使用しています。私は、rand
のようなMySql関数で構築された様々なものを使用できるようにしたいと思います。 MS SQL Serverを使用していた場合、SqlFunctionsクラスを使用できますが、これはMySqlでは機能しません。私は、データベースからの私のモデルを更新MySqlとEntity FrameworkでのSqlFunctionsまたは同等のEdmFunctionsコレクションの使用
CREATE FUNCTION Random()
RETURNS real NOT DETERMINISTIC
RETURN RAND();
(:私はRANDに建てラップ私のデータベースのユーザー定義関数を作成する方法を考え出した
Rand() on the type 'System.Data.Objects.SqlClient.SqlFunctions' cannot be translated into a LINQ to Entities store expression.
:私はエラーを取得しますI).ebmxを使用していて、そのような静的クラスを作成:
public static class MyUserFunctions {
[EdmFunction("MyModelNamespace.Store", "Random")]
public static double Random() {
throw new ArgumentNullException();
}
}
そして、それは私が私のエンティティクラス上.Where句内MyUserFunctions.Randomを呼び出すことができます:
をusing (MyEntities entities = new MyEntities()) {
// Yes, I know ORDER BY RAND() is slow
return entities.products.OrderBy(prod => MyUserFunctions.Random()).Take(4);
}
そこで質問があり、私は愚かなラッパーUDFを作成せずにこれを行うには、ちょうどすべての場合には(おそらく適切EdmFunction
のNamespace
プロパティを設定することで、(より直接的に利用できるMySQL関数で構築することができますSqlFunctions
名前空間は"SqlServer"
です)。
は、あなたのプロジェクトにMySQLの.NETコネクタを追加していますか? http://dev.mysql.com/downloads/connector/net/ – nisav