БД
public class CMManBase : DbManager
{
[TableName("RFolders")]
public class RFolder
{
public long ID;
public string Title;
[MapField("rfolderid")]
public long? ParentID;
[Association(ThisKey = "ID", OtherKey = "ParentID", CanBeNull = true)]
public List<RFolder> ChildFolders;
}
public IQueryable<RFolder> RFolders
{
get { return GetTable<RFolder>(); }
}
static CMManBase()
{
DbManager.AddDataProvider(typeof(BLToolkit.Data.DataProvider.FdpDataProvider));
}
}
Тут — стек оверфлоу
[TestMethod]
public void StackOverflowTest()
{
using (var db = new CMManBase())
{
var query = from folder in db.RFolders
where folder.ChildFolders.Count == 688369
select folder;
query.FirstOrDefault();
}
}
сорцы в 13 часов по москве обновлены из репозитория..
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, Jack128, Вы писали:
IT>Это вроде пофиксилось. Версию брать из репозитория, что-то фтп отвалился.
да вроде нет, всё еще возникает stack overlow в ревизии 922.
класс
public partial class ProjectTemplate
{
[Association(ThisKey = "ParentId", OtherKey = "Id", CanBeNull = true)]
public List<ProjectTemplate> Children;
[MapIgnore]
public int ChildrenCount
{
get; set;
}
}
запрос
public static IEnumerable<DB2.ProjectTemplate> GetByParentId(int parentId)
{
using (var ctx = DB.DbContext)
{
var q = from template in ctx.ProjectTemplate
where template.ParentId == parentId
select new DB2.ProjectTemplate
{
Id = template.Id,
ParentId = template.ParentId,
LinkToId = template.LinkToId,
Title = template.Title,
FileName = template.FileName,
Created = template.Created,
Format = template.LinkToId == 0
? template.Format
: ctx.ProjectTemplate
.Where(_ => _.Id == template.LinkToId)
.Select(_ => _.Format)
.First(),
ChildrenCount = template.Children.Count,
};
return q.ToList();
}
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1463>>
Здравствуйте, Holms, Вы писали:
H>Здравствуйте, IT, Вы писали:
Наверх, ошибка еще не пофиксена в ревизии 935.
LINQ
public static IEnumerable<ProjectTemplate> GetByParentId(int parentId)
{
using (var ctx = Context)
{
var q = from template in ctx.ProjectTemplate
where template.ParentId == parentId
select new ProjectTemplate
{
Id = template.Id,
ParentId = template.ParentId,
LinkToId = template.LinkToId,
Title = template.Title,
FileName = template.FileName,
Created = template.Created,
Format = template.LinkToId == 0
? template.Format
: ctx.ProjectTemplate
.Where(_ => _.Id == template.LinkToId)
.Select(_ => _.Format)
.First(),
ChildrenCount = template.Children.Count,
};
return q.ToList();
}
}
class
public partial class ProjectTemplate
{
[Association(ThisKey = "ParentId", OtherKey = "Id", CanBeNull = true)]
public List<ProjectTemplate> Children;
}
Stack Trace
BLToolkit.3.dll!BLToolkit.Data.Sql.SqlQuery.TableSource.this[BLToolkit.Data.Sql.ISqlTableSource, string].get(BLToolkit.Data.Sql.ISqlTableSource table = null, string alias = null) Line 377 + 0xffffffd4 bytes C#
BLToolkit.3.dll!BLToolkit.Data.Sql.SqlQuery.CheckTableSource(BLToolkit.Data.Sql.SqlQuery.TableSource ts = {BLToolkit.Data.Sql.SqlQuery.TableSource}, BLToolkit.Data.Sql.ISqlTableSource table = {BLToolkit.Data.Sql.SqlTable}, string alias = null) Line 3597 + 0x11 bytes C#
BLToolkit.3.dll!BLToolkit.Data.Sql.SqlQuery.TableSource.this[BLToolkit.Data.Sql.ISqlTableSource, string].get(BLToolkit.Data.Sql.ISqlTableSource table = {BLToolkit.Data.Sql.SqlTable}, string alias = null) Line 379 + 0x1c bytes C#
BLToolkit.3.dll!BLToolkit.Data.Sql.SqlQuery.CheckTableSource(BLToolkit.Data.Sql.SqlQuery.TableSource ts = {BLToolkit.Data.Sql.SqlQuery.TableSource}, BLToolkit.Data.Sql.ISqlTableSource table = {BLToolkit.Data.Sql.SqlTable}, string alias = null) Line 3597 + 0x11 bytes C#
....
... << RSDN@Home 1.2.0 alpha 4 rev. 1465>>