Проблемы производительности linq-to-sql при привязке к пользовательским моделям - PullRequest
0 голосов
/ 09 декабря 2011

Редактировать

После небольшого осмотра моего собственного кода я понял, что проблема не в проблемах производительности linq, а в том, что я случайно удалил этот фрагмент кода. Мои извинения, спасибо всем: D

Оригинальный пост

Я забочусь о проблемах производительности с linq to SQL. На данный момент я делаю что-то вроде этого:

var rslts = datacontext.People.AsQueryable();
foreach(var v in rslts)
    list.Add(new PersonModel(v)) //I do this because i need the model to have properties that are not in the linq model

затем присвойте список сетке данных wpf, и Person Model будет выглядеть примерно так:

LINQModels.Person _person;
public PersonModel(LINQModels.Person person)
{
   _person = person;
}

 public string FirstName
 {
       get{return _person.firstname;}
       set
       {
           if(value == _person.firstname)
                return;   
           _person.firstname = value;
       }
 }
  .... and so on;

Первоначально я использовал простые запросы к базе данных «SELECT *» и т. Д., А затем собрал модели вручную из полученных результатов, затем я решил использовать linq, поэтому я получил код, приведенный ниже, однако есть Major падение производительности с тех пор, как я перешел на метод linq, даже когда я просто прокручиваю результаты в таблице данных, OO сильно заикается.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Я не понимаю, что вы подразумеваете под "делайте это, потому что мне нужно, чтобы модель имела свойства, которых нет в модели linq".Зачем вам нужно иметь их в модели LINQ, если они относятся к модели LINQ?

[Table(...)]
public class MyTableClass
{
  [Column(...)]
  int RelatesToColumn{get;set;}

  int DoesntRelateToColumn
  {
    get { return RelatesToColumn + 42; }
  }
}

Кроме того, вам действительно нужен список с сеткой данных?Я не очень знаком с сеткой WPF, но не могли бы вы просто использовать datacontext.People.AsEnumerable().Select(v => new PersonModel(v));?

В более общем смысле, с LINQ2SQL могут быть проблемы с производительностью, хотя бывают случаи, когда небольшое количествоLINQ потребует большого количества оптимизации рук, чтобы превзойти другие подходы.Главное - подумать о том, что делает каждый запрос, и иметь достаточно скромности в этом, чтобы не предполагать, что вы каждый раз правильно относились к такому мышлению, поэтому вы изучаете фактический SQL (и, в свою очередь, план выполнения) в критических точках.

0 голосов
/ 09 декабря 2011

Вы можете расширить классы от Linq-до-sql, потому что они являются частичными классами, поэтому вы можете просто ..

public partial People
{
    // custom methods & properties that aren't auto generated by linq
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...