3

LINQ to Entities では、次のことが可能です。

context.User.Select(u => new Person
{
    Name = u.Name,
    Parent = u.Parent.Name
});

大きなUserテーブルの 2 つのプロパティだけが必要で、オブジェクトSelectを作成するメソッドを使用してそれらを取得し、Personそれを処理できるようにします。問題は、私がこれを頻繁に (1 秒に 2 回など) 行うことGCです。

そのため、オブジェクトをプールすることにしましたPersonが、LINQ to Entities を使用して既存のオブジェクトを更新する方法がわかりません。上記のように匿名メソッドとして取得し、そのプロパティをデプールされたオブジェクトに割り当てることができます。その後、デプールされたインスタンスを返すことができますGC

私は本当にこのようなものを好むだろう:

context.User.Select(u => People.Take(u.Name, u.Parent.Name))

をスローしNotSupportedExceptionます。

  • Entity Framework を使用して既存のオブジェクトの値を更新できますか?
  • もしそうなら、どのように?
  • そうでない場合、どのような代替手段がありますか?
4

2 に答える 2

1

オブジェクトのいくつかのプロパティだけを DB から取得することはできません。更新する場合は、完全なオブジェクトを取得して更新し、変更を保存する必要があります。

ただし、いくつかのフィールドを更新する必要があり、オブジェクト全体を移動したくない場合は、オブジェクトExecuteStoredCommandのメソッドを使用できcontextます (MySQL の例):

    context.ExecuteStoredCommand("UPDATE table1 SET field1 = @value1 WHERE field2 = @value2", new MySqlParameter("@value1", 1), new MySqlParameter("@value2", 2))

いくつかの SQL コードを記述する必要がありますが、通常のコネクタを使用するために必要な、接続のオープン、コマンドの作成などについて心配する必要がないため、時間を節約できます。

于 2012-11-03T08:43:23.243 に答える