powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# EF4 запрос по имени таблицы
25 сообщений из 223, страница 2 из 9
c# EF4 запрос по имени таблицы
    #38820591
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНакой мне создавать "тихий ужас" дизанером, если я могу нажать Run Custom Tool, и всё произойдёт само. Дельфийские корни напоминают о себе?
Объясню. Далеко не всегда (если вообще никогда) не используется 100% кодогенерация. Ненужные навигационные свойства убираются, переименовываются в нормальные имена, а не Users1, Users2, Users3. Могут добавляться новые свойства и маппиться на какие-то свои классы. Ты мне предлагаешь сидеть и руками гавнокодить это? Я выбираю дизайнер!

Алексей К Class Diagramm и без того есть, правда к EF он не имеет никакого отношения.
Ляпнул глупость и тут же уточнил, что это глупость? :)

Алексей КЯ не собираюсь ждать годами, когда ведро вендор соблаговолит отладить весь процесс разработки. За ~7 лет упорного труда наконец-то разработали DbContext API, который ничё так, и на том спасибо. Большего от них давно не жду.
Ну почему же, вон одату запилили и веб апи :) и этим 100% утопили soap как класс. Радуйся! Не?
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820622
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНакой мне создавать "тихий ужас" дизанером, если я могу нажать Run Custom Tool, и всё произойдёт само. Дельфийские корни напоминают о себе?
Объясню. Далеко не всегда (если вообще никогда) не используется 100% кодогенерация. Ненужные навигационные свойства убираются, переименовываются в нормальные имена, а не Users1, Users2, Users3. Могут добавляться новые свойства и маппиться на какие-то свои классы. Ты мне предлагаешь сидеть и руками гавнокодить это? Я выбираю дизайнер!Там же в T4 написал преобразование метаданных , полученных из БД, или прописал вручную часть partial class. Как больше нравится.
МСУАлексей КЯ не собираюсь ждать годами, когда ведро вендор соблаговолит отладить весь процесс разработки. За ~7 лет упорного труда наконец-то разработали DbContext API, который ничё так, и на том спасибо. Большего от них давно не жду.
Ну почему же, вон одату запилили и веб апи :) и этим 100% утопили soap как класс. Радуйся! Не?Аж сами чуть не утонули, ага... :-)
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820639
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТам же в T4 написал преобразование метаданных , полученных из БД, или прописал вручную часть partial class. Как больше нравится.
Я не хочу ничего писать в коде или T4, эти ковыряния - тоскливое уныние. Я хочу удобно в дизайнере корректировать модель под себя. Накойхер (с) ты мне предлагаешь навоз?

Алексей КАж сами чуть не утонули, ага... :-)
А чего ты зудишь. WPF'у дали жизнь, запилили одату, веб апи, мвц развивается постоянно, даже игрушечный спа тебе подарили. Что не так? )
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820655
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КТам же в T4 написал преобразование метаданных , полученных из БД, или прописал вручную часть partial class. Как больше нравится.
Я не хочу ничего писать в коде или T4, эти ковыряния - тоскливое уныние. Я хочу удобно в дизайнере корректировать модель под себя. Накойхер (с) ты мне предлагаешь навоз? Клал я на дизайнер. С тем же успехом я пропишу в коде первичный ключ для вьюхи , который отсутствует в метаданных БД. Это единственное, что мне приходится прописывать вручную. Всё остальное генерируется по соглашению.

МСУАлексей КАж сами чуть не утонули, ага... :-)
А чего ты зудишь. WPF'у дали жизнь, запилили одату, веб апи, мвц развивается постоянно, даже игрушечный спа тебе подарили. Что не так? )Может я спасибо ещё должен сказать за долгие годы ожидания? :-)
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820680
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто единственное, что мне приходится прописывать вручную. Всё остальное генерируется по соглашению.
Клал я не гавнокод и соглашения. Мне нужен инструмент, где я схематично могу изучить модель и тут же на лету что-то изменить. Что в этом плохого?

Алексей КМожет я спасибо ещё должен сказать за долгие годы ожидания? :-)
Это будет лучше, чем старческий пердёж в кустах
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820685
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЭто единственное, что мне приходится прописывать вручную. Всё остальное генерируется по соглашению.
Клал я не гавнокод и соглашения. Мне нужен инструмент, где я схематично могу изучить модель и тут же на лету что-то изменить. Что в этом плохого?Для этого есть нормальный дизайнер в MSSQL Management Studio. Про class diagramm (*.cd) молчу, ты его несправедливо обозвал глупостью. :-)
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820705
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убогие начинают признавать свои ошибки. Мир стал лучше!

Code First is a bad name
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820720
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДля этого есть нормальный дизайнер в MSSQL Management Studio
Ну есть еще дизайнер Visio. Почему его не предлагаешь? Вообще в мире много всяких дизайнеров существуют, тот же фотошоп. Ась?

Алексей КПро class diagramm (*.cd) молчу, ты его несправедливо обозвал глупостью. :-)
Так ты ж тоже его забраковал
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820723
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КДля этого есть нормальный дизайнер в MSSQL Management Studio
Ну есть еще дизайнер Visio. Почему его не предлагаешь? Вообще в мире много всяких дизайнеров существуют, тот же фотошоп. Ась?Зачем Visio, если в MSSQL родной нормальный дизайнер?

МСУАлексей КПро class diagramm (*.cd) молчу, ты его несправедливо обозвал глупостью. :-)
Так ты ж тоже его забраковал Я его не браковал, я на нём ТРИ диаграммы нарисовал, очень им доволен! :-)
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820748
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗачем Visio, если в MSSQL родной нормальный дизайнер?
Не понимаю тебя. А зачем программисту, который работает с Oracle + EF, родной нормальный дизайнер от MS SQL? :)

Алексей КЯ его не браковал, я на нём ТРИ диаграммы нарисовал, очень им доволен! :-)
Выкинь на помойку. Нужен полноценный edm инструмент, в котором можно сделать всё тоже самое, что и ручками в коде модели.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820760
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА зачем программисту, который работает с Oracle + ...Мне его вообще не жалко!

зы: Когда я работал с DB2 + EF меня никто не жалел.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820796
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМне его вообще не жалко!
Это я к тому, что MS SQL диаграммы вообще никак не коррелируют с дизайнером EF модели. Это сравнение теплого с мягким.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820809
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМне его вообще не жалко!
Это я к тому, что MS SQL диаграммы вообще никак не коррелируют с дизайнером EF модели. Это сравнение теплого с мягким.Очень даже коррелируют. Контекст базы отражает один-в-один структуру БД.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820811
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМне его вообще не жалко!
Это я к тому, что MS SQL диаграммы вообще никак не коррелируют с дизайнером EF модели. Это сравнение теплого с мягким.Или мы про кроссубдные решения уже говорим? :-)
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820818
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККонтекст базы отражает один-в-один структуру БД.
Глупости. Я могу удалять, изменять и добавлять элементы схемы (связи, навигационные свойства, типы и так далее). И что делать с названиями навигационных свойств Users1, Users2, Users3?

Алексей КИли мы про кроссубдные решения уже говорим? :-)
А это не важно. Мы говорим о том, что схема БД и схема EF - разные вещи по сути своей. Схема EF вообще может быть не завязана на БД.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820824
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККонтекст базы отражает один-в-один структуру БД.
Глупости. Я могу удалять, изменять и добавлять элементы схемы (связи, навигационные свойства, типы и так далее). И что делать с названиями навигационных свойств Users1, Users2, Users3?Ничего удалять и добавлять не надо. Всё должно генерироваться по БД.

Ассоциации именуются так :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public partial class message
{
    [Required(ErrorMessage = DbMainContext.RequiredFieldMessage), DataMember]         
    public int? SenderPersID { get; set; } 
 
    // Именование производится по принципу: FieldName1_FieldName2_Reference.
 
    [ForeignKey("SenderPersID")] 
    public personal SenderPersID_Reference { get; set; } 
}


Обратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}



МСУАлексей КИли мы про кроссубдные решения уже говорим? :-)
А это не важно.Уффф... а то я запереживал.
МСУМы говорим о том, что схема БД и схема EF - разные вещи по сути своей.Старый маразматик.
МСУСхема EF вообще может быть не завязана на БД.EF, работающий не с БД? Ну не знаю...
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820845
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Глупости. Я могу удалять, изменять и добавлять элементы схемы (связи, навигационные свойства, типы и так далее). И что делать с названиями навигационных свойств Users1, Users2, Users3?Ничего удалять и добавлять не надо. Всё должно генерироваться по БД.

Ассоциации именуются так :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public partial class message
{
    [Required(ErrorMessage = DbMainContext.RequiredFieldMessage), DataMember]         
    public int? SenderPersID { get; set; } 
 
    // Именование производится по принципу: FieldName1_FieldName2_Reference.
 
    [ForeignKey("SenderPersID")] 
    public personal SenderPersID_Reference { get; set; } 
}


Обратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}



Ужоснах. С таким гавнокодом даже в зоопарке засмеют. За "SenderPersID_Reference" нужно плетью по лицу, 10 раз по левой щеке, 10 раз по правой. На именования классов с маленькой буквы нужно подвешивать за ноги на 2 суток. За каждый новый класс с маленькой буквы накидывать по одном дню.

Вот так должен выглядеть класс.

Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class Message
{
    public int MessageId { get; set; } 
    public int? PersonId { get; set; } 
    public Person Person { get; set; } 
    public IList<Person> Managers { get; set; }
}



Четкие лаконичные бизнесовые имена, никаких префиксов и прочего мусора. Обозначение ясное и внятное.

Алексей КСтарый маразматик.
Не суть :)

Алексей КEF, работающий не с БД? Ну не знаю...
Почему нет? Что-то типа IEdmModel в OData, мы уже обсуждали эту тему.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820846
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КОбратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}


За реализацию List<T> в модели - вообще растягивать лошадьми на базаре.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38820978
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Ничего удалять и добавлять не надо. Всё должно генерироваться по БД.

Ассоциации именуются так :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public partial class message
{
    [Required(ErrorMessage = DbMainContext.RequiredFieldMessage), DataMember]         
    public int? SenderPersID { get; set; } 
 
    // Именование производится по принципу: FieldName1_FieldName2_Reference.
 
    [ForeignKey("SenderPersID")] 
    public personal SenderPersID_Reference { get; set; } 
}


Обратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}



Ужоснах. С таким гавнокодом даже в зоопарке засмеют. За "SenderPersID_Reference" нужно плетью по лицу, 10 раз по левой щеке, 10 раз по правой. На именования классов с маленькой буквы нужно подвешивать за ноги на 2 суток. За каждый новый класс с маленькой буквы накидывать по одном дню.

Вот так должен выглядеть класс.

Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class Message
{
    public int MessageId { get; set; } 
    public int? PersonId { get; set; } 
    public Person Person { get; set; } 
    public IList<Person> Managers { get; set; }
}



Четкие лаконичные бизнесовые имена, никаких префиксов и прочего мусора. Обозначение ясное и внятное.Схерализагуляли? У меня чёткие и лаконичные имена, однозначно описывающие ассоциации: понятно откуда, куда и по каким полям. Классы с маленькой буквы, потому что в БД с маленькой буквы, много лет с этим живём, никто ещё не умер. Какая-то условная красота меня не интересует, мы не в картинной галерее.

МСУАлексей КEF, работающий не с БД? Ну не знаю...
Почему нет? Что-то типа IEdmModel в OData, мы уже обсуждали эту тему.Какой-то сервис с логикой, отдающий IQueryable. EF тут причём?
МСУАлексей КОбратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}


За реализацию List<T> в модели - вообще растягивать лошадьми на базаре.Ну замени интерфейсом, в моём кодогенераторе есть такая возможность.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821001
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККлассы с маленькой буквы, потому что в БД с маленькой буквы, много лет с этим живём, никто ещё не умер.

Полностью согласен с МСУ. В EF есть прекрасный механиз настраиваемых соглашений (convention), вплоть до того, что имя MyCustomTableName может ложится в базу под именем my_custom_table_name (такое соглашение актуально, например, для Postgres). Подгон наименований классов и полей под какую-то базу, означает, что поциент просто не в состоянии осилить инструмент, который использует. Оправдания неуместны. Взялся за гуж, как говориться...

Алексей ККакая-то условная красота меня не интересует, мы не в картинной галерее.

Вот именно, дешевые отмазки не катят. Делай как принято, чтобы другие тебя понимали. Ты же с людьми разговариваешь человеческим языком, а не обезьяньим?
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821004
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Вот тебе примерчик, чтобы ты больше так не косячил, на будущее:

Код: 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.
    public class LowerCaseConvention : IStoreModelConvention<EdmProperty>, IStoreModelConvention<EntitySet>
    {
        internal static string ToLowerCase(string name)
        {
            return name.Aggregate(new StringBuilder(name.Length * 2), (a, c) =>
            {
                if (Char.IsUpper(c) && a.Length > 0) a.Append('_');
                return a.Append(Char.ToLower(c));
            })
                .ToString();
        }

        /// <summary>
        /// Соглашение для полей.
        /// </summary>
        void IStoreModelConvention<EdmProperty>.Apply(EdmProperty item, DbModel model)
        {
            item.Name = ToLowerCase(item.Name);
        }

        /// <summary>
        /// Соглашение для таблиц.
        /// </summary>
        void IStoreModelConvention<EntitySet>.Apply(EntitySet item, DbModel model)
        {
            var tableName = item.Table;

            // вот ещё сразу один пример, что можно делать:
            // дополнительное правило для таблиц ASP.NET Identity, убирающее паразитный префикс
            if (tableName.StartsWith("AspNet"))
                tableName = tableName.Substring(6);

            item.Table = ToLowerCase(tableName);
        }
    }



Использование:

Код: c#
1.
2.
3.
4.
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Add<LowerCaseConvention>();
         }



Вот и всё, нет больше смысла жопу рвать, подгоняя наименования классов под стиль наименования, принятый в БД
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821009
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КОбратные так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public partial class personal 
{ 
    // Именование производится по принципу: TableName_FieldName1_FieldName2_Reference.
 
    [InverseProperty("SenderPersID_Reference")] 
    public List<message> message_SenderPersID_Reference { get; set; }
}



За реализацию List<T> в модели - вообще растягивать лошадьми на базаре.

Да не только за List<T>, но и за IList<T> тоже. Уже доводилось не раз за это по рукам подованом хлестать.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821012
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КАссоциации именуются так :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public partial class message
{
    [Required(ErrorMessage = DbMainContext.RequiredFieldMessage), DataMember]         
    public int? SenderPersID { get; set; } 
 
    // Именование производится по принципу: FieldName1_FieldName2_Reference.
 
    [ForeignKey("SenderPersID")] 
    public personal SenderPersID_Reference { get; set; } 
}



Когда ты уже наконец осилишь инструмент под названием EF, то узнаешь, что правила для ассоциаций тоже можно настраивать и генерить их как угодно, не трогая при этом классы. Так делают только упоротые бестолковые глупые студенты, которые просто тупо не способны разобраться в предмете и предпочитают «щёлкать» задачи непосредственно своим лбом. Не уподобляйся им.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821014
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
public personal SenderPersID_Reference { get; set; }



Да, конечно, это слёзы... Ужоснах. На ревью бы за такое был бы разнос в пух и прах, и с обязательным наказанием, если бы подобное повторилось хоть раз.
...
Рейтинг: 0 / 0
c# EF4 запрос по имени таблицы
    #38821033
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей ККлассы с маленькой буквы, потому что в БД с маленькой буквы, много лет с этим живём, никто ещё не умер.

Полностью согласен с МСУ. В EF есть прекрасный механиз настраиваемых соглашений (convention), вплоть до того, что имя MyCustomTableName может ложится в базу под именем my_custom_table_name (такое соглашение актуально, например, для Postgres). Подгон наименований классов и полей под какую-то базу, означает, что поциент просто не в состоянии осилить инструмент, который использует. Оправдания неуместны. Взялся за гуж, как говориться...Ну и накой мне эти преобразования? Чтобы что? Ты инженер или где?
hVosttАлексей ККакая-то условная красота меня не интересует, мы не в картинной галерее.
Вот именно, дешевые отмазки не катят. Делай как принято, чтобы другие тебя понимали. Ты же с людьми разговариваешь человеческим языком, а не обезьяньим?Что не понятно?
...
Рейтинг: 0 / 0
25 сообщений из 223, страница 2 из 9
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / c# EF4 запрос по имени таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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