16

私はエンティティフレームワークの初心者です。

次のメソッドCreateQuery()が見つかりません


ここに画像の説明を入力してください

なぜこの方法が見つからないのですか?!!

4

3 に答える 3

21

ESQLは高度なユースケースと見なされていたため、からの単純なAPIはありませんDbContext。あなたはあなたがやりたいことをするためにあなたをObjectContext支援するにアクセスすることができます:DbContext

((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..")

関連: http: //thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/

ObjectContextそこで提案されているように、コンテキストクラスにメソッド(またはプロパティ)を追加することもできます。

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }
}
于 2013-02-03T12:35:19.083 に答える
7

まず第一に、これはEFでクエリを実行するためのネイティブソリューションではありません。できるだけ多くのLINQを学習してから、別のメソッドが本当に必要であることがわかっている場合は、CreateQuery()にフォールバックしてください。

しかし、あなたはこのようにキャストすることであなたが望む結果を得ることができますSystem.Data.Entity.Core.Objects.IObjectContextAdapter

(context as IObjectContextAdapter).ObjectContext.CreateQuery

また、次のコマンドを使用してSQLコマンドを実行できます。

context.Database.SqlQuery<>()context.Database.ExecuteSqlCommand()

お役に立てれば

于 2013-02-02T14:27:40.457 に答える
0

私はefcoreを使用していますが、sqlserverからサーバー時間を取得したいのですが、私の場合はどのアプローチも機能しませんでした。IObjectContextAdapterが認識されないため、ef6をダウンロードするように求められました。

サーバー時間を取得するための以下のステートメントを見つけました。

private DateTime GetServerTime()
{
    using (var db = new DbContext())
    {
        DbConnection connection = db.Database.GetDbConnection();
        connection.Open();
        DbCommand cmd = connection.CreateCommand();
        cmd.CommandText = "SELECT GETDATE()";
        return (DateTime)cmd.ExecuteScalar();
    }
}

このメソッドを使用して、任意のSQLステートメントを作成し、dbからデータを取得できます。それが誰かを助けることを願っています。

于 2020-09-19T21:27:31.737 に答える