Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Аноним, Вы писали:
А>>Хорошо бы добавить дополнительную возможность генерить модель в стиле EF Code First. Всё больше появляется разного рода инструментов в VS которая завязана на EF модель. Например EF Code First and Data Scaffolding with the ASP.NET MVC 3
IT>В стиле EF Code First это без атрибутов?
Это может быть с атрибутами и без, лучше конечно с атрибутами и дополнительно ассоциации представленные как виртуальные свойства.
Здравствуйте, IT, Вы писали:
IT>Просьба потестировать новую версию.
Янус. Подписка на форумы. Запрос:
public static IQueryable<T> GetAllForums<T>(
DbManager mgr,
Expression<Func<IServerForum, T>> srvSelector,
Expression<Func<ISubscribedForum, T>> subsSelector)
{
var subsFrms = mgr.SubscribedForums();
return
mgr
.ServerForums()
.Where(f => !subsFrms.Any(of => of.ID == f.ID))
.Select(srvSelector)
.Union(subsFrms.Select(subsSelector));
}
...
var forums =
GetAllForums(
mgr,
f => new {f.ID, f.Name, f.Descript, Subscribed = false},
f => new {f.ID, f.Name, f.Descript, Subscribed = true})
.ToDictionary(forum => forum.ID);
Генерируется sql
(501) SELECT
t501.t496.ID as ID,
t501.t496.Name as Name,
t501.t496.Descript as Descript
FROM
server_forums as t496
WHERE
(NOT (EXISTS((497) SELECT
*
FROM
subscribed_forums as t498
WHERE
(t498.ID = t496.ID) )) )
UNION
(499) SELECT
t499.t500.ID as ID,
t499.t500.Name as Name,
t499.t500.Descript as Descript,
t499.True as c1
FROM
subscribed_forums as t500
Ругань sqlite
SQLite error
SELECTs to the left and right of UNION do not have the same number of result columns
var updated =
msgs
.Into(db.TopicInfos())
.Value(_ => _.MessageID, m => m.ID)
.Value(_ => _.ForumID, m => m.ForumID)
.Value(_ => _.AnswersCount, m => m.TopicAnswers.Count())
.Value(
_ => _.AnswersRates,
m =>
rates
.Where(r => r.Message.TopicID == m.ID && r.RateType > 0)
.Sum(r => (int)r.RateType * r.Multiplier))
.Value(
_ => _.AnswersUnread,
m => m.TopicAnswers.Count(im => !im.IsRead) + (m.IsRead ? 0 : 1))
.Value(
_ => _.AnswersSmiles,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.Smile))
.Value(
_ => _.AnswersAgrees,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.Agree))
.Value(
_ => _.AnswersDisagrees,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.DisAgree))
.Value(
_ => _.AnswersToMeUnread,
m =>
m
.TopicAnswers
.Count(im => !im.IsRead && im.Parent.UserID == Config.Instance.SelfId))
.Value(_ => _.AnswersMarked, m => m.TopicAnswers.Count(im => im.IsMarked))
.Value(_ => _.LastUpdateDate, m => m.TopicAnswers.Max(im => (DateTime?)im.Date) ?? m.Date)
.Value(
_ => _.AnswersModeratorials,
m =>
mods
.Count(
mod =>
mod.Message.TopicID == m.ID
&& (mod.Message.LastModerated == null || mod.Create > mod.Message.LastModerated)))
.Value(_ => _.SelfRates, m => m.Rating())
.Value(_ => _.SelfSmiles, m => m.SmileCount())
.Value(_ => _.SelfAgrees, m => m.AgreeCount())
.Value(_ => _.SelfDisagrees, m => m.DisagreeCount())
.Value(_ => _.SelfModeratorials, m => m.ActiveModeratorialCount())
.Insert();
В ExpressionBuilder.cs:1201 валится с исключением InvalidOperationException — Sequence contains no matching element
method = {m.TopicAnswers.Max(im => ConvertChecked(im.Date))}
predicate = {Method = {Boolean <ConvertSelector>b__43(System.Reflection.MethodInfo)}}
Вызывается из ExpressionBuilder.cs:1051
IT>>С этого момента принимаются пожелания по дальнейшему развитию библиотеки А>Можно расценить это как пожелание .
Можно рассценить как угодно. Но лучший способ добиться результата сегодня — это сделать форк проекта на GitHub, воспроизвести проблему в виде юнит теста в dev версии проекта и послать pull request.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: BLToolkit 4.1 released
От:
Аноним
Дата:
05.07.11 11:31
Оценка:
Здравствуйте, IT, Вы писали: IT>Можно рассценить как угодно. Но лучший способ добиться результата сегодня — это сделать форк проекта на GitHub, воспроизвести проблему в виде юнит теста в dev версии проекта и послать pull request.
Уже есть: Mapping.MemberMapperTest2() (в наст. время закомментирован)
За совет спасибо, в будущем так и буду поступать.
Замыкания выражений становятся частью выражений и кешируются. В результате при любом контексте (любых значениях локальных переменных) выражение всегда вычисляется относительно кешированных значений.
void Foo(Item item)
{
using (var dbManager = new DbManager())
{
var isExistingItem = dbManager.Items.Contains(item);
// аналогично:
// var isExistingItem = dbManager.Items.Any(i => i.Id == item.Id);
}
}
В данном примере при нескольких последовательных вызовах Foo для разных объектов isExistingItem всегда будет иметь одинаковое значение (существует ли первый объект) независимо от наличия текущего объекта в базе.
Получается такой запрос:
SELECT
CASE WHEN EXISTS(
SELECT
*
FROM
[Items] [t1]
WHERE
[t1].[Id] = '<id от первого объекта>'
) THEN 1 ELSE 0 END as [c1]
Здравствуйте, Аноним, Вы писали:
А>СУБД: ssce 3.5.5692.0
Fixed.
Если нам не помогут, то мы тоже никого не пощадим.
Re: BLToolkit 4.1 released
От:
Аноним
Дата:
14.07.11 17:43
Оценка:
Здравствуйте, IT, Вы писали:
IT>С этого момента принимаются пожелания по дальнейшему развитию библиотеки
Хотелось бы чтобы Linq2DB, о которой ты говорил, увидела свет.
Здравствуйте, Аноним, Вы писали:
IT>>С этого момента принимаются пожелания по дальнейшему развитию библиотеки А>Хотелось бы чтобы Linq2DB, о которой ты говорил, увидела свет.
В планах. Уже даже завёл репу. Сейчас пофиксим некоторые баги, добавим некоторые фичи и вплотную этим займёмся.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Expression closures caching issue
От:
Аноним
Дата:
14.07.11 18:03
Оценка:
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Аноним, Вы писали:
А>>СУБД: ssce 3.5.5692.0
IT>Fixed.
Здравствуйте, AndrewVK, Вы писали:
AVK>Янус. Самый страшный запрос.
Fixed.
Если нам не помогут, то мы тоже никого не пощадим.
Re: BLToolkit 4.1 released
От:
Аноним
Дата:
17.07.11 13:48
Оценка:
Здравствуйте, IT, Вы писали:
IT>С этого момента принимаются пожелания по дальнейшему развитию библиотеки
Было бы очень удобно, если бы был модуль интеграции BLT для LINQPad: http://www.linqpad.net/Extensibility.aspx