none
Куда пропали конструкторы в ADO.NET EDM? RRS feed

  • Вопрос

  • Добрый день. Создал модель EDM в visual studio 2012 и хотел подключится к базе используя EntityConnection, а не вышло. Таких конструкторов больше нет. Только один и тот по умолчанию. Попытался написать сам но при построении код сам генерировался и они пропали. В 2010 было так:

     #region Конструкторы
        
            /// <summary>
            /// Инициализирует новый объект PCTEOEntities, используя строку соединения из раздела "PCTEOEntities" файла конфигурации приложения.
            /// </summary>
            public PCTEOEntities() : base("name=PCTEOEntities", "PCTEOEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
        
            /// <summary>
            /// Инициализация нового объекта PCTEOEntities.
            /// </summary>
            public PCTEOEntities(string connectionString) : base(connectionString, "PCTEOEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }
        
            /// <summary>
            /// Инициализация нового объекта PCTEOEntities.
            /// </summary>
            public PCTEOEntities(EntityConnection connection) : base(connection, "PCTEOEntities")
            {
                this.ContextOptions.LazyLoadingEnabled = true;
                OnContextCreated();
            }

    А в 2012 только 

       public WTBaseEntities()
                : base("name=WTBaseEntities")
            {
            }

    И все. Как вернуть конструкторы с параметрами? Необходимо создавать подключение читая строку подключения из файла.

     
    10 сентября 2013 г. 7:07

Ответы

  • там только один конструктор без параметров! Если вручную написать то перетираются иногда.

    Класс недаром помечен модификатором partial. Чтобы вручную добавленные конструкторы не затирались при каждой новой перегенерации кода, поместите их в отдельный файл, пометив класс как partial.
    • Помечено в качестве ответа firefox0013 21 сентября 2013 г. 11:48
    11 сентября 2013 г. 10:39

Все ответы

  • Если вы про это

    то он вроде ещё там.


    Сделаем содержимое сообщества лучше, вместе!

    10 сентября 2013 г. 14:59
    Модератор
  • Нет. Я не про визуальный конструктор. в vs2010 после создания модели edm появлялся класс типа xxxEntities.  Основной класс для работы с базой. В нем были все отражения табличек. Ну как то так. У этого класса были разные конструкторы. Можно было подключится к базе используя строку подключения итп. А в vs2012 этот клас тоже создается но там только один конструктор без параметров! Если вручную написать то перетираются иногда. 

    Как вариант я пока создал свой класс типа 

     public partial class MyEntities : DbContext
        {
            public MyEntities()
                : base("name=Entities")
            {
            }
    
            public MyEntities(string cs)
                : base(cs)
            {
            }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                throw new UnintentionalCodeFirstException();
            }
    
            public DbSet<Day> Day { get; set; }
        }

    И подключаюсь с его помощью. Насколько я понял такие изменения произошли из за версии EF

     
    11 сентября 2013 г. 2:11
  • Посмотрите этот топик и этот.

    Сделаем содержимое сообщества лучше, вместе!

    11 сентября 2013 г. 7:52
    Модератор
  • там только один конструктор без параметров! Если вручную написать то перетираются иногда.

    Класс недаром помечен модификатором partial. Чтобы вручную добавленные конструкторы не затирались при каждой новой перегенерации кода, поместите их в отдельный файл, пометив класс как partial.
    • Помечено в качестве ответа firefox0013 21 сентября 2013 г. 11:48
    11 сентября 2013 г. 10:39