powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
25 сообщений из 451, страница 2 из 19
ORM vs sql
    #37585606
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bob DylanSolYUtor,
в смысле, кто-то реально работает с кэшем второго уровня?

В смысле я реально работаю с кешем второго уровня.
...
Рейтинг: 0 / 0
ORM vs sql
    #37598635
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosОРМ - ерунда
прошу Сатисфакция. Свои слова нужно аргументировать, а не заниматься вбросами.

И.
Что вы ответите вот на этот кусочек.
Код: 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.
public abstract class ListRecordItem<T> : GridIBindingListRecordPrototype where T : EntityObject
    {
        T mappedobject;
        T fRecordCache;


        public virtual string ObjectContextName { get; set; }
        public ListRecordItem() : this(Activator.CreateInstance(typeof(T)) as T)
        {
            
        }
        public ListRecordItem(EntityObject eObj)
            : base(eObj)
        {
            Assign(eObj);
            Committed = (eObj.EntityKey != null);
        }
        public override void BeginEdit()
        {
            if (IsValidate())
            {
                MapObject(RecordCache as T, mappedobject);
            }
        }

        public override void CancelEdit()
        {
            if (Editing)
            {
                Assign(RecordCache);
                Editing = false;
            }
            base.CancelEdit();
        }
        public override void EndEdit()
        {
            base.EndEdit();
        }
        
        public override void Assign(EntityObject eObj)
        {
            if (eObj == null) return;
            Editing = false;
            if (mappedobject == null || mappedobject.EntityKey == null) { mappedobject = eObj as T; }
            else
            {
                MapObject(mappedobject, eObj as T);
            }
        }

        public abstract void MapObject(T to, T from);

        public override EntityObject RecordCache
        {
            get
            {
                if (fRecordCache == null) fRecordCache = Activator.CreateInstance(typeof(T)) as T;
                return fRecordCache;
            } 
        }

        public override bool CanDelete()
        {
            return true;
        }

        public override bool CanEdit()
        {
            throw new NotImplementedException();
        }

        public override bool IsNew()
        {
            return (mappedobject.EntityKey == null);
        }

        public override EntityObject MappedObject
        {
            get
            {
                return mappedobject;
            }
            set
            {
                mappedobject = value as T;
            }
        }

        public override void Commit()
        {
            if (Editing && IsValidate())
            {
                using (var context = Activator.CreateInstance(Type.GetType(this.ObjectContextName)) as ObjectContext)
                {
                    (context.Connection as EntityConnection).StoreConnection.ConnectionString = ConnectionStringState.GetEntityConnectionString();
                    T m = MappedObject as T;
                    if (IsNew())
                    {
                        context.AddObject(m.GetType().Name, m);
                        try
                        {
                            context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                            Committed = true;
                            Editing = false;
                            Console.WriteLine("Commit");
                            Assign(m);
                        }
                        catch (OptimisticConcurrencyException ex) { Console.WriteLine(ex.Message); }
                        catch (EntityCommandExecutionException ex) { Console.WriteLine(ex.Message); }
                        catch (Exception ex) { Console.WriteLine(ex.Message); }
                    }
                    else
                    {
                        try
                        {

                            context.AttachTo(m.EntityKey.EntitySetName, m);
                        }
                        catch (Exception ex)
                        { Console.WriteLine(ex.Message); }
                        context.ObjectStateManager.ChangeObjectState(m, EntityState.Modified);
                        try
                        {
                            context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                            System.Reflection.PropertyInfo propinfo = m.GetType().GetProperty("recaff");
                            if (propinfo != null)
                            {
                                object o = propinfo.GetValue(m, System.Reflection.BindingFlags.Public, null, null, null);
                                if (int.Parse(o.ToString()) == 0)
                                    UserMessanger.WarningUserConcurrencyWrite();
                            }
                            Assign(m);
                            Committed = true;
                            Editing = false;
                            Console.WriteLine("Commit");
                        }
                        catch (OptimisticConcurrencyException ex) { Console.WriteLine(ex.Message); }
                        catch (EntityCommandExecutionException ex) { Console.WriteLine(ex.Message); }
                        catch (Exception ex) { Console.WriteLine(ex.Message); }
                    }
                }
            }
        }

        public override void Remove()
        {
            if (!IsNew())
                using (var context = Activator.CreateInstance(Type.GetType(this.ObjectContextName)) as ObjectContext)
                {
                    (context.Connection as EntityConnection).StoreConnection.ConnectionString = ConnectionStringState.GetEntityConnectionString();
                    T m = MappedObject as T;
                    context.AttachTo(m.EntityKey.EntitySetName, m);
                    context.ObjectStateManager.ChangeObjectState(m, EntityState.Deleted);
                    try
                    {
                        context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
                    }
                    catch (OptimisticConcurrencyException ex) { Console.WriteLine(ex.Message); }
                    catch (EntityCommandExecutionException ex) { Console.WriteLine(ex.Message); }
                    catch (Exception ex) { Console.WriteLine(ex.Message); }
                }
        }

        public override bool IsValidate()
        {
            return false;
        }

        public override void SetDefaultValues(params object[] args)
        {
            throw new NotImplementedException();
        }

        public override object ValidateRecord()
        {
            throw new NotImplementedException();
        }
    }
...
Рейтинг: 0 / 0
ORM vs sql
    #37598640
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
описался мальца, в смысле
япрошу Cатисфакции
...
Рейтинг: 0 / 0
ORM vs sql
    #37598674
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga,

Ну ерунда, она ерунда и есть.
...
Рейтинг: 0 / 0
ORM vs sql
    #37598677
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeProga,

Ну ерунда, она ерунда и есть.
где факты?
...
Рейтинг: 0 / 0
ORM vs sql
    #37598848
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga,

зачем ты запостил эту портянку?
на ответную :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        public void Генерация_Нормативного_процесса_из_Структуры_изделия_и_Основного_поставщика(Guid contextId, YSBMESDataSet ds, DataTable dt, DataRow dr)
        {
            main.LoadMacroType("Процесс нормативный");

            t_sm = main.GetObjectIDByObjectName("Тип смещения", "Дни");
            t_po = main.GetObjectIDByObjectName("Тип потока", "Материальный");
            t_sv = main.GetObjectIDByObjectName("Тип связи", "КонецВНачало");

            DataRow tpr = ds.Tables["Процесс нормативный"].NewRow();
            tpr["РодительИД"] = DBNull.Value;
            tpr["Наименование"] = "Изготовление " + dr["Наименование"].ToString();
            tpr["Тип смещения"] = t_sm;
            //            tpr["Актуальность"] = true;
            ds.Tables["Процесс нормативный"].Rows.Add(tpr);

            var compozits = main.GetAgregatedTypesByName("Составное изделие");
            var matandpki = main.GetAgregatedTypesByName("Материалы и ПКИ");

            if (!matandpki.Contains("'" + dr["ТипИД"].ToString() + "'")) СоздатьНПизСтруктурыиОП(ds, dr, (Guid)tpr["ИД"], Guid.Empty);

            main.SaveDS();
        }
...
Рейтинг: 0 / 0
ORM vs sql
    #37598861
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosВсё ещё кипятите Пора уже начинать пользоваться строгой типизацией при работе с данными.
...
Рейтинг: 0 / 0
ORM vs sql
    #37598872
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

да ладно
все строго типизировано в контракте
...
Рейтинг: 0 / 0
ORM vs sql
    #37598873
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos
Эпическая сила... Пестец пришел заметно...
...
Рейтинг: 0 / 0
ORM vs sql
    #37598875
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosвсе строго типизировано в контракте
...
Рейтинг: 0 / 0
ORM vs sql
    #37598879
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУViPRos
Эпическая сила... Пестец пришел заметно...
...
Рейтинг: 0 / 0
ORM vs sql
    #37598883
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:):):)
...
Рейтинг: 0 / 0
ORM vs sql
    #37599120
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosProga,

зачем ты запостил эту портянку?
на ответную :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        public void Генерация_Нормативного_процесса_из_Структуры_изделия_и_Основного_поставщика(Guid contextId, YSBMESDataSet ds, DataTable dt, DataRow dr)
        {
            main.LoadMacroType("Процесс нормативный");

            t_sm = main.GetObjectIDByObjectName("Тип смещения", "Дни");
            t_po = main.GetObjectIDByObjectName("Тип потока", "Материальный");
            t_sv = main.GetObjectIDByObjectName("Тип связи", "КонецВНачало");

            DataRow tpr = ds.Tables["Процесс нормативный"].NewRow();
            tpr["РодительИД"] = DBNull.Value;
            tpr["Наименование"] = "Изготовление " + dr["Наименование"].ToString();
            tpr["Тип смещения"] = t_sm;
            //            tpr["Актуальность"] = true;
            ds.Tables["Процесс нормативный"].Rows.Add(tpr);

            var compozits = main.GetAgregatedTypesByName("Составное изделие");
            var matandpki = main.GetAgregatedTypesByName("Материалы и ПКИ");

            if (!matandpki.Contains("'" + dr["ТипИД"].ToString() + "'")) СоздатьНПизСтруктурыиОП(ds, dr, (Guid)tpr["ИД"], Guid.Empty);

            main.SaveDS();
        }



это у тебя портянка, причём вызывает рвотный рефлекс (ассоциация с 1С), а я выложил код на базе которого можно сварганить систему быстрого сохранения данных объекта сгенерированного на базе EF.
надо только в конструкторе выбрать маппинг свойств на параметры.
...
Рейтинг: 0 / 0
ORM vs sql
    #37599128
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и ещё раз почему?
ViPRos ОРМ - ерунда

Факты!
...
Рейтинг: 0 / 0
ORM vs sql
    #37599152
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga
Код: c#
1.
Activator.CreateInstance(typeof(T)) as T



Код: c#
1.
return new T();



ListRecordItem
Код: c#
1.
where T : EntityObject, new()

...
Рейтинг: 0 / 0
ORM vs sql
    #37599214
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Proga,

то что ты выложил - код для кода
покажи фаулеру какму нить
а на 1с вся раша пишет
...
Рейтинг: 0 / 0
ORM vs sql
    #37599332
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУProga
Код: c#
1.
Activator.CreateInstance(typeof(T)) as T



Код: c#
1.
return new T();



+
ListRecordItem
Код: c#
1.
where T : EntityObject, new()


сэнкс, заработался однако. башка ужо не варит.

2 ViPRos: ты не увиливай. факты про ОРМ- ерунда жду.
...
Рейтинг: 0 / 0
ORM vs sql
    #37599568
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа на 1с вся раша пишет
Правильно, стаду хороший тон противопоказан. На кой он им, пущай пишут.

...
...
Рейтинг: 0 / 0
ORM vs sql
    #37599813
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProgaViPRosОРМ - ерунда
прошу Сатисфакция. Свои слова нужно аргументировать, а не заниматься вбросами.

И.
Что вы ответите вот на этот кусочек.


Спрячь и никому не показывай
...
Рейтинг: 0 / 0
ORM vs sql
    #37599903
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
If you let the O/RM command you, you’re lost .
ORM - туфтаThe code that flows data between the model and the database can be written by you (via stored procedures, for example) or by some O/RMs. O/RMs, though, tend to be invasive and dictate too many development and design aspects.

O/RMs can save a lot of work and are a great tool indeed, but poor understanding (or just poor explanation) of their role helps create the domain/database dilemma and makes it harsher every day
...
Рейтинг: 0 / 0
ORM vs sql
    #37599960
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVahe code that flows data between the model and the database can be written by you (via stored procedures, for example) or by some O/RMs. O/RMs, though, tend to be invasive and dictate too many development and design aspects.

Да ладно? Вот прям так диктует аспекты дизайна, и лезет в код? Но даже это было бы хорошо, по сравнению с той феерией бессистемных sql-ляпов, коими богаты многие проекты, и этот форум в частности.

SeVaO/RMs can save a lot of work and are a great tool indeed, but poor understanding (or just poor explanation) of their role helps create the domain/database dilemma and makes it harsher every day


Краткий перевод: если вы не умеете программировать- то программировать плохо получается.
У других хоть какие-то аргументы есть.
Опираться на мнение мелкомягких, которые изобретают кривое колесо, идейно стыренное из open source проектов сообщества (nunit, EF, Unity и т.д.) я бы не стал.
...
Рейтинг: 0 / 0
ORM vs sql
    #37599967
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaDino Esposito: Microsoft .NET: Architecting Applications for the EnterpriseИнтересная ссылка
Dino EspositoНаша позиция в книге - O/RM это просто средство. Нельзя требовать его наличия, и оно не должно влиять на структуру баз данных или моделей данных. Если Вы позволяете O/RM командовать вашей жизнью, вы неудачник. Это и есть настоящая болевая точка.
...
Рейтинг: 0 / 0
ORM vs sql
    #37599971
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffSeVaDino Esposito: Microsoft .NET: Architecting Applications for the EnterpriseИнтересная ссылка
Dino EspositoНаша позиция в книге - O/RM это просто средство. Нельзя требовать его наличия, и оно не должно влиять на структуру баз данных или моделей данных. Если Вы позволяете O/RM командовать вашей жизнью, вы неудачник. Это и есть настоящая болевая точка.

Все правильно. Все ORMисты - лузеры.

2 SolYUtor. Аргументы а'la "ORM лучше наших кривых рук" - это для бедных.
...
Рейтинг: 0 / 0
ORM vs sql
    #37600032
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева, готов ли ты продемонстрировать достойную альтернативу?
...
Рейтинг: 0 / 0
ORM vs sql
    #37600037
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffDino EspositoЕсли Вы позволяете O/RM командовать вашей жизнью, вы неудачник. Это и есть настоящая болевая точка.
Осталось только понять, что есть командование жизнью.
...
Рейтинг: 0 / 0
25 сообщений из 451, страница 2 из 19
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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