今すぐすべてのhuffyを取得しないでください。これは非常に特殊な状況のためだけです。だから、なぜ私がEFを通してインライン・ストリングSQLを送信したいのかを尋ねるのではなく、単に「どのように」のトピックに留もうとしましょう。エンティティ・フレームワークで通常のインラインSQLを送信する方法
通常の古いADO.NETを使用して旧式のルートを実行する必要がありますか、またはEFがSQL Select/Nonqueryを実行する方法を提供していますか?
ありがとうございます。
今すぐすべてのhuffyを取得しないでください。これは非常に特殊な状況のためだけです。だから、なぜ私がEFを通してインライン・ストリングSQLを送信したいのかを尋ねるのではなく、単に「どのように」のトピックに留もうとしましょう。エンティティ・フレームワークで通常のインラインSQLを送信する方法
通常の古いADO.NETを使用して旧式のルートを実行する必要がありますか、またはEFがSQL Select/Nonqueryを実行する方法を提供していますか?
ありがとうございます。
Entity SQLについて調査しましたか?
string city = "London";
using (Entities entities = new Entities())
{
ObjectQuery<Customers> query = entities.CreateQuery<Customers>(
"SELECT VALUE c FROM Customers AS c WHERE c.Address.City = @city",
new ObjectParameter("city", city)
);
foreach (Customers c in query)
Console.WriteLine(c.CompanyName);
}
エンティティSQLは現在、DML構築物の任意 を欠いているので、それは 問題挿入、更新することはできません、またはエンティティSQLを使用して コマンドを削除し、 サービス
としてオブジェクトの代替ObjectQuery複数のデータベーステーブルをまたがるオプションが必要な場合は、context.Database.SqlQuery<>
とSqlParameter
を使用してください。
例:
var searchId = new Guid("16144A52-A092-4876-9C55-A0AD0109F08A");
var sqlparam = new SqlParameter("sid", searchId);
using (var context = new Entities())
{
var sql = @"SELECT t1.Name, t2.ChildName
FROM dbo.Table1 as t1
INNER JOIN dbo.Table1 as t2
ON t1.Id = t2.ParentId
WHERE t1.Id = @sid"
var result = context.Database.SqlQuery<Combined>(sql, sqlparam);
foreach(var r in result)
{
Console.WriteLine(r.Name + r.ChildName)
}
}
public class Combined
{
public string Name { get; set; }
public string ChildName { get; set; }
}
はい、エンティティSQLは、私はそれを認識していても、私は必要なものではありません。私は時間の99.9%のLINQを使用していますが、これは特定のインスタンスの1つです。私はちょうど簡単なADO.NETインターフェイスを設定する必要があるように見えます。答えをありがとう。 – Chev
私はADO.NETにそれをさせると言うでしょう。私は最近、あなたが求めているのと同様の状況を抱えていました。簡単で洗練されたADO.NETを素早く実際に実行して処分できるようにしました。私の提案 – PsychoCoder
ObjectQuery <>の代わりにSqlQuery <>を使用している場合、ObjectParametersがSqlParametersになるように注意してください –