Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.128.129] |
|
Сообщ.
#1
,
|
|
|
Поставили вот на компы 4й фреймворк. Я такой обрадовался, кароче, думаю можно будет теперь вместо громадных лефт жойнов на linq2sql писать на entitysql небольшой код текстом, удобно очень будет, наверно.
ObjectQuery<DbDataRecord> query = new ObjectQuery<DbDataRecord>(@"SELECT VALUE row (p.id as id, p.Name as name ) FROM patchEntities.Pribor AS p join patchEntities.Type As t on p.id_type = t.id", m_dc); var pribors = query.ToList().Select(x => new Predmet { id = (int)x["id"], name = x["name"].ToString() }); Пока получился такой вот монстр. Не очень удобно, конечно. а вы как его используете? |
Сообщ.
#2
,
|
|
|
Я немного вас не понимаю. Если вы используете EF, то вместо такого кода можно же написать такой. Писал по тому коду что привели вы, так что могут быть ошибки.
//Вариант 1 var result = from p in patchEntities.Pribor join s in patchEntities.Type on p.id_type equals s.id select new Predmet { id = p.id, name = p.Name }; //Вариант два (точечная нотация или Fluent API) var query = patchEntities.Pribor // source .Join(patchEntities.Type, // target c => c.id_type, // FK cm => cm.id, // PK (c, cm) => new { Id = c.id, Name = c.Name }) // project result .Select(x => new Predmet { id = x.Id, name = x.Name }); // select result Я для запросов использую sql-подобный синтаксис. Как по мне то он лучше отражает суть запросов к базе, и более компактный. Этот монстр по размеру будет меньше чем ваш. Есть еще такая штука как Dynamic LINQ, о том как ее использовать можете посмотреть здесь |
Сообщ.
#3
,
|
|
|
я так мог и в третьем,5 фрейморке делать. Я не понимаю приемущества Entity Frameworka. Мне старый l2sql больше удобств давал.
К примеру я в source любой таблицы мог поставить Database1.dbo.Table1 а во втором dbml файле у меня была таблица Database2.dbo.Table2 И я их мог спокойно сджойнивать без проблем, добираясь до второй таблицы через dataContext.GetTable<Table2>() без запарок. Добавлено Цитата Craft @ Если вы используете EF, то вместо такого кода можно же написать такой. Ну я понял. Я всё время пишу такой код =). Просто я думал, что с переходом на ef буду писать на майкрософтовском эскюэле, и бед не знать. |
Сообщ.
#4
,
|
|
|
А не проще ли код который вы хотите писать в MS SQL вынести в процедуры и замапить их через EF? Это один из плюсов. Второй плюс в том что кроме стандартной генерации классов в EF можно дописать кастомный мапинг на базу данных и добавить необходимые атрибуты через T4. Как по мне то EF классная штука. Но использовать ее или нет, это дело сугубо вкуса. То же самое можно делать и на NHibernate и на BLToolkit. Выбирайте инструмент так чтобы с ним было удобно работать вам. Если не нравится EF но все таки он используется в проекте, то можно писать запросы напрямую в БД, подобно таким которые вы привели как пример.
|
Сообщ.
#5
,
|
|
|
В том то и дело, что пока сам не столкнёшься с новой системой обработки данных - не узнаешь, на сколько он тебе удобен.
А что за Т4 ? Я много, что гуглил - ничего не нашёл. Разве что тип один на Стэковерфлов пытался в схему добавить строчку вида "base.dbo", но так не канает. Ему посоветовали в текущей базе сделать вьюшки, но меня такой поворот не устраивает. |
Сообщ.
#6
,
|
|
|
Цитата Koss @ А что за Т4 Text Template Transformation Toolkit |