powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / repository & aggregate entity
25 сообщений из 305, страница 7 из 13
repository & aggregate entity
    #39571054
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosЧто то ты рано испугался
значит ты не в теме.
Там по смыслу была нормализация. Зачем идти против смысла и писать против ветра?
ViPRosа ты в последнее время
я же на пятёрки учился, а троечникам это читать не надо.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571060
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

смотри, в следующий раз будет хуже
надо уметь доказывать в обе сторону
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571061
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosPetro123,
смотри, в следующий раз будет хуже
надо уметь доказывать в обе сторону
в какую из этих сторон?
Rich Domain Model противопоставляют Anemic Domain Model - Фаулер(с)
За то что предупредил, спасибо))
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571063
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Не забивай башку учебным фуфлом, нет никаких рич домен и т.д.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571066
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosPetro123,
Не забивай башку учебным фуфлом, нет никаких рич домен и т.д.
Да!
И Фаулера в соседней палате тоже нет!
Код: plaintext
Это их худые черти Мутят воду во пруду, Это всё придумал Черчилль В восемнадцатом году! Мы про взрывы, про пожары Сочинили ноту ТАСС... Но примчались санитары И зафиксировали нас. 
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571150
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123в какую из этих сторон?
Rich Domain Model противопоставляют Anemic Domain Model - Фаулер(с)
За то что предупредил, спасибо))

А где здесь денормализация? ))
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571157
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Дак это был вопрос к нему и тем кто rest осваивает.
К тебе нет вопросов, ты и так все знаешь)
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571224
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123в какую из этих сторон?
Rich Domain Model противопоставляют Anemic Domain Model - Фаулер(с)
За то что предупредил, спасибо))

А где здесь денормализация? ))Не обращай внимания, это очередной комментарий "воще невпопад" :)
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571252
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе обращай внимания, это очередной комментарий "воще невпопад" :)
Ты сам разобрался с вопросом ITшника - как делается корзина?
Щас мы тут выведем тебя на чистую воду).
С чем еще трудности?
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571366
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

никак не пойму - это бот так долго учится или просто не доделали
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571394
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,
Хорош трепаться в междуобойчике. Для картинок и трепа есть ветка Разработка ИС.
Здесь код пожалуйста.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571398
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

на

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
        internal void FillModelParallel(string typename, Guid typeid, Guid contextid, Guid macroid, bool filltype, bool fillrel, Dictionary<Guid, string> filters, bool viewmode = false, YSBMESDataSet ds = default(YSBMESDataSet), System.ComponentModel.BackgroundWorker wk = null)
        {
            /*
            swsql.Reset();
            swsql.Start();
            */

            var er = GetContext(contextid);
            if (ds == default(YSBMESDataSet)) ds = er.DS;
            if (ds == default(YSBMESDataSet)) ds = currentDS;

            lock (ds)
            {
                ds.EnforceConstraints = false;

                var macrotypename = GetMacroTypeNameByMacroTypeID(macroid.ToString());
                var types = GetTypesInMacroType(macrotypename);
                foreach (var t in types)
                {
                    if (ds.Tables[t].ExtendedProperties.ContainsKey("hasExpFields"))
                    {
                        var changed = TypeTableEventsMinus(t, ds);

                        foreach (DataColumn dc in ds.Tables[t].Columns)
                        {
                            if (!(dc.Expression == ""))
                            {
                                if (!dc.ExtendedProperties.ContainsKey("exp")) dc.ExtendedProperties.Add("exp", dc.Expression);
                                else
                                {
                                    if (dc.ExtendedProperties["exp"].ToString() != dc.Expression) dc.ExtendedProperties["exp"] = dc.Expression;
                                }
                                dc.Expression = "";
                                dc.ReadOnly = false;
                            }
                        }

                        TypeTableEventsPlus(t, changed, ds);
                    }
                }

                /*
                string times = "";
                swsqlobject.Reset();
                swsqlobject.Start();
                */

                if (wk == null || !wk.CancellationPending)
                {
                    if (filltype) FillType(typename, typeid, filters[macroid], viewmode, ds);
                    else fillrel = false;

                    if (wk != null) wk.ReportProgress(10, 1);

                    /*
                    swsqlobject.Stop();
                    times += typename + " - " + swsqlobject.Elapsed.ToString() + "\r\n";
                    var elap = swsqlobject.ElapsedMilliseconds;
                    */

                    if (fillrel && ds.Tables[typename].Rows.Count > 0)
                    {
                        Dictionary<Guid, КонтекстныеНастройкиСвязей> svs = new Dictionary<Guid, КонтекстныеНастройкиСвязей>();
                        if (MacroTypes.ContainsKey(macroid)) svs = MacroTypes[macroid].Links;
                        var sv = svs.Where(s => s.Value.Связь != null).Select(s => new { ИД = s.Key, s.Value.Связь }).ToDictionary(s => s.Связь);

                        System.Collections.Concurrent.ConcurrentStack<Tuple<string, System.Collections.Concurrent.ConcurrentDictionary<string, string>>> stack = new System.Collections.Concurrent.ConcurrentStack<Tuple<string, System.Collections.Concurrent.ConcurrentDictionary<string, string>>>();
                        System.Collections.Concurrent.ConcurrentDictionary<string, string> extprops = new System.Collections.Concurrent.ConcurrentDictionary<string, string>();

                        var ttypename = ds.Tables[typename];
                        extprops.TryAdd("InnerList", ttypename.ExtendedProperties["InnerList"].ToString());
                        extprops.TryAdd("ParentInnerList", ttypename.ExtendedProperties["ParentInnerList"].ToString());
                        extprops.TryAdd("InnerJoinOnList", ttypename.ExtendedProperties["InnerJoinOnList"].ToString());
                        extprops.TryAdd("ActualSQL", ttypename.ExtendedProperties["ActualSQL"].ToString());
                        extprops.TryAdd("Filter", (ttypename.ExtendedProperties.ContainsKey("Where") ? ttypename.ExtendedProperties["Where"].ToString() : "") +
                                                  (ttypename.ExtendedProperties.ContainsKey("WhereFC") ? ttypename.ExtendedProperties["WhereFC"].ToString() : "") +
                                                  filters[macroid]);

                        stack.Push(new Tuple<string, System.Collections.Concurrent.ConcurrentDictionary<string, string>>(typename, extprops));

                        while (stack.Count > 0)
                        {
                            if (wk != null && wk.CancellationPending) break;

                            var tuple = new Tuple<string, System.Collections.Concurrent.ConcurrentDictionary<string, string>>(string.Empty, new System.Collections.Concurrent.ConcurrentDictionary<string, string>());
                            stack.TryPop(out tuple);

                            typename = tuple.Item1;
                            ttypename = ds.Tables[typename];
                            ttypename.ExtendedProperties["InnerList"] = tuple.Item2["InnerList"];
                            ttypename.ExtendedProperties["ParentInnerList"] = tuple.Item2["ParentInnerList"];
                            ttypename.ExtendedProperties["InnerJoinOnList"] = tuple.Item2["InnerJoinOnList"];
                            ttypename.ExtendedProperties["ActualSQL"] = tuple.Item2["ActualSQL"];
                            ttypename.ExtendedProperties["Filter"] = tuple.Item2["Filter"];

                            var rls = ((List<ТипДляCreateRelations>)ds.Tables[typename].ExtendedProperties["DownRelations"]).
                                                                    Where(r => sv.ContainsKey(typename + "_" + r.Наименование + "{" + r.Синоним + "}"));
                            if (ttypename.Rows.Count > 0 && rls.Any())
                            {
                                /*
                                string inList = "";// ttypename.AsEnumerable().Select(rw => rw["ИД"].ToString()).Aggregate((a, b) => b + "," + a);
                                StringBuilder sb = new StringBuilder();
                                foreach(DataRow rw in ttypename.Rows)
                                {
                                    if (sb.Length == 0) sb.Append(rw["ИД"].ToString());
                                    else sb.Append("," + rw["ИД"].ToString());
                                }
                                inList = sb.ToString();
                                */

                                ParallelOptions pop = new ParallelOptions();
                                pop.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
                                Parallel.ForEach(rls, pop, (r, ls) =>
                                {
                                    if (wk != null && wk.CancellationPending) ls.Stop();

                                    var rtypename = ds.Tables[r.Наименование];
                                    if (typename != r.Наименование)
                                    {
                                        //*
                                        if (ttypename.ExtendedProperties["InnerList"].ToString().Length > 0)
                                            rtypename.ExtendedProperties["ParentInnerList"] = ttypename.ExtendedProperties["InnerList"].ToString();
                                        else
                                        {
                                            if (ttypename.ExtendedProperties["ParentInnerList"].ToString().Length > 0)
                                                rtypename.ExtendedProperties["ParentInnerList"] = ttypename.ExtendedProperties["ParentInnerList"].ToString();
                                        }
                                        rtypename.ExtendedProperties["InnerJoinOnList"] = ttypename.ExtendedProperties["InnerJoinOnList"].ToString();
                                        rtypename.ExtendedProperties["InnerJoinOn"] = r.Синоним;

                                        if (paging || ttypename.ExtendedProperties["Filter"].ToString().Length > 0)
                                        {
                                            if (ttypename.ExtendedProperties["ActualSQL"].ToString().Length > 0)
                                                rtypename.ExtendedProperties["InnerJoinTo"] = "(" + ttypename.ExtendedProperties["ActualSQL"].ToString() + ")";
                                            rtypename.ExtendedProperties["InnerJoinToOn"] = "ИД";
                                        }

                                        //внешний фильтр
                                        string baseWhere = "";
                                        if (rtypename.ExtendedProperties.ContainsKey("Where")) baseWhere = rtypename.ExtendedProperties["Where"].ToString();

                                        if (er != null && er.externalSQLWhereForMacroLinks.ContainsKey(typename + "_" + r.Наименование + "{" + r.Синоним + "}"))
                                        {
                                            var exFilt = er.externalSQLWhereForMacroLinks[typename + "_" + r.Наименование + "{" + r.Синоним + "}"];
                                            if (!string.IsNullOrEmpty(exFilt))
                                            {
                                                if (!rtypename.ExtendedProperties.ContainsKey("Where")) rtypename.ExtendedProperties.Add("Where", "(" + exFilt + ")");
                                                else
                                                {
                                                    if (!string.IsNullOrEmpty(rtypename.ExtendedProperties["Where"].ToString()))
                                                    {
                                                        rtypename.ExtendedProperties["Where"] = "((" + rtypename.ExtendedProperties["Where"] + ") and (" + exFilt + "))";
                                                    }
                                                    else rtypename.ExtendedProperties["Where"] = "(" + exFilt + ")";
                                                }
                                            }
                                        }
                                        //------------------
                                        //*/

                                        // rtypename.ExtendedProperties["InnerList"] = inList;
                                        // rtypename.ExtendedProperties["InnerJoinOnList"] = r.Синоним;

                                        lock (ds.Tables[r.Наименование])
                                        {
                                            /*
                                            var sw = new Stopwatch();
                                            sw.Reset();
                                            sw.Start();
                                            */

                                            FillType(r.Наименование, r.ИД, filters[sv[typename + "_" + r.Наименование + "{" + r.Синоним + "}"].ИД], false, ds);
                                            if (ds.Tables[r.Наименование].ExtendedProperties.ContainsKey("Where")) ds.Tables[r.Наименование].ExtendedProperties["Where"] = baseWhere;

                                            if (wk != null) wk.ReportProgress(10, 1);

                                            /*
                                            sw.Stop();
                                            System.Threading.Interlocked.Add(ref elap, sw.ElapsedMilliseconds);
                                            times += r.Наименование + " - " + sw.Elapsed.ToString() + "\r\n";
                                            */
                                        }

                                        System.Collections.Concurrent.ConcurrentDictionary<string, string> сextprops = new System.Collections.Concurrent.ConcurrentDictionary<string, string>();
                                        сextprops.TryAdd("InnerList", rtypename.ExtendedProperties["InnerList"].ToString());
                                        сextprops.TryAdd("ParentInnerList", rtypename.ExtendedProperties["ParentInnerList"].ToString());
                                        сextprops.TryAdd("InnerJoinOnList", rtypename.ExtendedProperties["InnerJoinOnList"].ToString());
                                        сextprops.TryAdd("ActualSQL", rtypename.ExtendedProperties["ActualSQL"].ToString());
                                        сextprops.TryAdd("Filter", ttypename.ExtendedProperties["Filter"].ToString() +
                                                                   (rtypename.ExtendedProperties.ContainsKey("Where") ? rtypename.ExtendedProperties["Where"].ToString() : "") +
                                                                   (rtypename.ExtendedProperties.ContainsKey("WhereFC") ? rtypename.ExtendedProperties["WhereFC"].ToString() : "") +
                                                                   filters[sv[typename + "_" + r.Наименование + "{" + r.Синоним + "}"].ИД]);

                                        stack.Push(new Tuple<string, System.Collections.Concurrent.ConcurrentDictionary<string, string>>(r.Наименование, сextprops));
                                    }
                                }
                                );
                            }
                        }
                    }
                }

                if (wk != null) wk.ReportProgress(10, 2);

                foreach (var t in types)
                {
                    if (ds.Tables[t].ExtendedProperties.ContainsKey("hasExpFields"))
                    {
                        var changed = TypeTableEventsMinus(t, ds);

                        foreach (DataColumn dc in ds.Tables[t].Columns)
                        {
                            if (dc.ExtendedProperties.ContainsKey("exp"))
                            {
                                if (dc.Expression != dc.ExtendedProperties["exp"].ToString()) dc.Expression = dc.ExtendedProperties["exp"].ToString();
                                if (!dc.ReadOnly) dc.ReadOnly = true;
                            }
                        }

                        TypeTableEventsPlus(t, changed, ds);
                    }

                    ClearTypeLoadingParameters(t, ds);
                }

                ds.EnforceConstraints = true;
            }

            /*
            swsql.Stop();

            times += "SQL" + " - " + swsql.Elapsed.ToString() + "\r\n";
            times += "Всего" + " - " + TimeSpan.FromMilliseconds(elap).ToString() + "\r\n";
            MessageBox.Show(times);
            */
        }
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571409
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosPetro123,
на
Не мне. ТС'y. И будешь положительным мембером).
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571414
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Код: c#
1.
2.
3.
4.
5.
ttypename.ExtendedProperties["InnerList"] = tuple.Item2["InnerList"];
                            ttypename.ExtendedProperties["ParentInnerList"] = tuple.Item2["ParentInnerList"];
                            ttypename.ExtendedProperties["InnerJoinOnList"] = tuple.Item2["InnerJoinOnList"];
                            ttypename.ExtendedProperties["ActualSQL"] = tuple.Item2["ActualSQL"];
                            ttypename.ExtendedProperties["Filter"] = tuple.Item2["Filter"];



Туплесы ща намного живее стали.


ViPRos
Код: c#
1.
2.
var rls = ((List<ТипДляCreateRelations>)ds.Tables[typename].ExtendedProperties["DownRelations"]).
                                                                    Where(r => sv.ContainsKey(typename + "_" + r.Наименование + "{" + r.Синоним + "}"));



Был ли смысл дальше параллелить, если не параллелить запросы? А если тут триллион, всё в память? Странно-странно )
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571421
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

не разрешают переходить на новые версии - 4.0 и все.
а параллелить нет, все в конфиге, управляется через fill* видно же?
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571428
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

FillModelParallel больно жирный и многозадачный метод.. надеюсь подобных упущений у вас не так много )
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571430
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно вообще ничего не загрузить
а так там куча фильтров и параметров управляющих
основной режим - загружается отфильтрованный образующий тип и каррент объект на видимую глубину
меняется каррент и все дозагружается динамически
много режимов - для вью, для методов и т.д.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571432
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRos,

FillModelParallel больно жирный и многозадачный метод.. надеюсь подобных упущений у вас не так много )

да так какжется
если еще и такие разбить то получится 100 тыщ методов
и так несколько тыщ, описывать невозможно уже все это
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571434
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и как мельче методы, так медленнее все фурычит
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571439
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
плодить методы, которые вызываются один раз - глупость полная
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571440
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVosttViPRos,

FillModelParallel больно жирный и многозадачный метод.. надеюсь подобных упущений у вас не так много )

да так какжется
если еще и такие разбить то получится 100 тыщ методов
и так несколько тыщ, описывать невозможно уже все это

суть -- не раздолбашить на 100 тыщ методов, а разделить по обязанностям и ответственности. кто догадается, что метод лезет в конфиг и что-то там читает? не потестишь, не проконтролируешь.

а про if-ы больше одного экрана и т.п. это уже задроство, хоть и не безосновательное )
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571442
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosможно вообще ничего не загрузить
а так там куча фильтров и параметров управляющих
основной режим - загружается отфильтрованный образующий тип и каррент объект на видимую глубину
меняется каррент и все дозагружается динамически
много режимов - для вью, для методов и т.д.

настоколько много, что может быть уместен параллелизм?

кста, асинхронность я так понимаю не поддерживается нигде?
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571456
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosможно вообще ничего не загрузить
а так там куча фильтров и параметров управляющих
основной режим - загружается отфильтрованный образующий тип и каррент объект на видимую глубину
меняется каррент и все дозагружается динамически
много режимов - для вью, для методов и т.д.

настоколько много, что может быть уместен параллелизм?

кста, асинхронность я так понимаю не поддерживается нигде?

Параллелизм нужен в ВИП.Производство.

Асинхронность? допустим этот метод и параллелен и асинхронен.
4.0 нудно реализовать асинхронность - хотя вроде где то видел библиотеку с async await.
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571458
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttсуть -- не раздолбашить на 100 тыщ методов, а разделить по обязанностям и ответственности. кто догадается, что метод лезет в конфиг и что-то там читает? не потестишь, не проконтролируешь.

а про if-ы больше одного экрана и т.п. это уже задроство, хоть и не безосновательное )
все что методу нужно, он получает через параметры
...
Рейтинг: 0 / 0
repository & aggregate entity
    #39571464
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа про if-ы больше одного экрана и т.п. это уже задроство, хоть и не безосновательное )
+1 но я уж не стал его еще больше возбуждать.
...
Рейтинг: 0 / 0
25 сообщений из 305, страница 7 из 13
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / repository & aggregate entity
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]