Comments 22
За что минус? ;)
+6
Да, а почему заголовок на английском?
-1
Исправте «impove» на «improve» в заголовке пожалуйста.
-1
Хочу дополнить к пункту 6.Мониторить запросы, которые генерирует LINQ.
Это очень актуально для запросов с join-ами. Заметил, что если использовать более 1-го join-а и оператор into, в 80% случаев linq генерит неоптимальный код.
Еще есть удобный и бесплатный инструмет для работы с linq запросами — linqpad (скачать можно здесь www.linqpad.net)
Это очень актуально для запросов с join-ами. Заметил, что если использовать более 1-го join-а и оператор into, в 80% случаев linq генерит неоптимальный код.
Еще есть удобный и бесплатный инструмет для работы с linq запросами — linqpad (скачать можно здесь www.linqpad.net)
-1
У меня есть вопрос по 5 пункту:
как сделать UpdateCheck.Never для всех сущностей по умолчанию?
как сделать UpdateCheck.Never для всех сущностей по умолчанию?
-1
Я поищу способ
-1
Я удобного способа не нашел.
Да и на форуме MSDN пока ничего не ответили.
Думаю, можно DBML-файл открыть в XML-редакторе и просто сделать replace.
Да и на форуме MSDN пока ничего не ответили.
Думаю, можно DBML-файл открыть в XML-редакторе и просто сделать replace.
0
В общем я для себя вопрос апдейта решил следующим образом.
псевдокод:
public void Update(Entity entity)
{
using(MyDataContext dc = DataContextFactory.CreateInstance())
{
Entity original = dc.Entities.SingleOrDefault(c => c.Id == entity.Id);
ItemHelper.Clone(entity, original);
dc.SubmitChanges();
}
}
Фишка тут в методе Clone. Он с помощью рефлексии проходтся по всем полям первого объекта, помеченым атрибутом Column и копирует их значени во второй объект.
Для простых апдейтов работает замечательно
псевдокод:
public void Update(Entity entity)
{
using(MyDataContext dc = DataContextFactory.CreateInstance())
{
Entity original = dc.Entities.SingleOrDefault(c => c.Id == entity.Id);
ItemHelper.Clone(entity, original);
dc.SubmitChanges();
}
}
Фишка тут в методе Clone. Он с помощью рефлексии проходтся по всем полям первого объекта, помеченым атрибутом Column и копирует их значени во второй объект.
Для простых апдейтов работает замечательно
0
Клонирование не совсем эффективная техника.
Рефлекция.
Я бы советовал просто добавить в каждую таблицу добавить по колонке типа timestamp (MSSQL) и вам не придется с клонированием мучаться.
Рефлекция.
Я бы советовал просто добавить в каждую таблицу добавить по колонке типа timestamp (MSSQL) и вам не придется с клонированием мучаться.
0
красиво кто-то прошелся =|
0
AlexS, привет
времени с публикации поста прошло немало, но надеюсь Вы эту тему еще не забросили, и сможете помочь в одном вопросе :)
Если сформулировать вкратце, то как сделать ObjectTrackingEnabled=false и SubmitChanges одновременно?
Т.е. если я извлекаю какие-то данные конструкцией select c, затем в другом приложении меняю эти данные, и читаю в исходном снова — они не меняются, LINQ соханяет их в текущий кэш.
Refresh объекта делать не всегда возможно (например, я удалил запись). Создавать каждый раз новый контекст — забить память (dispose не приводит к немедленному освобождению памяти).
А как Вы строите многопользовательские приложения?
времени с публикации поста прошло немало, но надеюсь Вы эту тему еще не забросили, и сможете помочь в одном вопросе :)
Если сформулировать вкратце, то как сделать ObjectTrackingEnabled=false и SubmitChanges одновременно?
Т.е. если я извлекаю какие-то данные конструкцией select c, затем в другом приложении меняю эти данные, и читаю в исходном снова — они не меняются, LINQ соханяет их в текущий кэш.
Refresh объекта делать не всегда возможно (например, я удалил запись). Создавать каждый раз новый контекст — забить память (dispose не приводит к немедленному освобождению памяти).
А как Вы строите многопользовательские приложения?
0
Вам как раз Refresh и нужен.
LINQ To SQL exception with Attach(): Cannot add an entity with a key that is alredy in use
Насчет удаленных сущностей, их, подозреваю, нужно обрабатывать отдельно.
>А как Вы строите многопользовательские приложения?
Давно уже linq2sql не используем, да и занимаюсь теперь другими вещами. Поэтому ответить нечего.
Если у вас есть конкретный пример и вопрос, залейте его на StackOverflow, а я могу переслать ссылку на вопрос ребятам, которые помогут.
LINQ To SQL exception with Attach(): Cannot add an entity with a key that is alredy in use
Насчет удаленных сущностей, их, подозреваю, нужно обрабатывать отдельно.
>А как Вы строите многопользовательские приложения?
Давно уже linq2sql не используем, да и занимаюсь теперь другими вещами. Поэтому ответить нечего.
Если у вас есть конкретный пример и вопрос, залейте его на StackOverflow, а я могу переслать ссылку на вопрос ребятам, которые помогут.
0
9. Take и только потом Skip? А не наоборот ли?
(Знаю, статья жутко устарела. Но все же.)
(Знаю, статья жутко устарела. Но все же.)
return context.Products
.Take(pageSize)
.Skip(startingPageIndex * pageSize)
.ToList();
+1
Sign up to leave a comment.
10 Tips to improve Linq2Sql performance