Самая новая версия MS Enterprise Library, совместимая с более старыми версиями, такими как 3.1

StackOverflow https://stackoverflow.com/questions/1929994

Вопрос

Этот текущий проект, который я был назначен, использует уровни версии 3.1:

Microsoft.Practices.EnterpriseLibrary.Common;
Microsoft.Practices.EnterpriseLibrary.Data;

Когда я пытаюсь узнать больше о возможностях ENT LIB, я сталкиваюсь с множеством статей и документа о различных версиях (3.1, 4.0 и 5.0, я думаю).

В общем, работают ли новые версии с кодом приложения, написанным для более раннего выпуска ENT LIB? Я не обследовал весь исходный код в этом приложении, которое я унаследовал, но я думаю, что используются только «основы» блока приложения доступа к данным. Вот типичный кусок кода:

        public override List<Erx.Action> GetAll(bool bIsActive)
    {
        Database db = null;
        DbCommand cmd = null;
        List<Erx.Action> lst = null;
        IDataReader iRdr = null;
        try
        {
            db = DatabaseFactory.CreateDatabase();
            cmd = db.GetStoredProcCommand("Mst_GetAllCorrectiveAction");
            db.AddInParameter(cmd, "@CorrectiveActionID", DbType.Int32, -1);
            db.AddInParameter(cmd, "@IsActive", DbType.Boolean, bIsActive);
            iRdr = db.ExecuteReader(cmd);

            lst = new List<Erx.Action>();

            while (iRdr.Read())
            {
                Action objAction = new Action();
                objAction.CorrectiveAction = iRdr["CorrectiveAction"].ToString();
                objAction.CorrectiveActionID = int.Parse(iRdr["CorrectiveActionID"].ToString());
                objAction.IsActive = (bool)iRdr["IsActive"];
                lst.Add(objAction);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            db = null;
            iRdr.Close();
            if (cmd != null)
            {
                cmd.Dispose(); cmd = null;
            }
        }
        return lst;
    }

Честно говоря, это, похоже, не предлагает гораздо больше обычных Ado.net, но, возможно, новые версии делают все проще (я слышал некоторые очень хорошие вещи о единстве).

Это было полезно?

Решение

Я только что установил ENT LIB 4.1 и тщательно вытащил в DOC и нашел это в «Введение в блок приложения доступа к данным»:

Измененные функции, версия 3.1 и позже

В целом, приложения, созданные с использованием более ранних выпусков блока приложения доступа к данным, будут функционировать с этим выпуском без необходимости каких -либо изменений кода. Может потребоваться обновить ссылки на новые сборки и обновить файлы конфигурации, чтобы ссылаться на правильную версию сборков. Тем не менее, были внесены некоторые изменения в блок приложения доступа к данным в версии 3.1 (май 2007 г.), что может повлиять на приложения, написанные для более ранних версий, если вы обновите на текущую версию Enterprise Library. В следующих разделах описываются эти изменения.

Класс .NET Framework 2.0 TransactionScope Чтобы воспользоваться преимуществами класса TransactionScope .NET 2.0, в некоторых методах класса базы данных были изменения в версии Enterprise Library с версии 3.1. Эти методы, такие как exectenonquery, были изменены для распознавания, когда экземпляр TransactionScope активен путем замены метода GetConnection методом getOpenceNconection. Если вы написали класс, который наследует из класса базы данных, вам нужно будет переписать свой код, чтобы принять во внимание эти изменения. Если вы продолжите использовать метод GetConnection, вы получите предупреждение компилятора. Кроме того, если ваше приложение использует метод executexmlreader, вам может потребоваться переписать свой код, чтобы проверить, является ли экземпляр TransactionScope активен перед закрытием соединения. Для получения дополнительной информации см. Использование класса TransactionScope. Для примера того, как использовать метод executexmlreader, см. В поиске нескольких строк в виде XML. сильный текст SQL Server Compact Edition Enterprise Library 3.1 - май 2007 г., а затем поддерживает SQL Server Compact Edition (CE). SQL Server CE предоставляет основные функции реляционной базы данных и предназначены для настольных и мобильных приложений, которые требуют локального хранилища данных, но не требуют полной функциональности SQL Server. Для получения дополнительной информации см. Раздел «Использование SQL Server CE» в создании объекта базы данных.

Я все еще пытаюсь понять, насколько действительно полезен этот Daab. Похоже, что для написания DEC требуется огромное количество чтения DOC, чтобы написать немного меньше кода, чем требуется в случае с Ado.net, не связанным с Daab. Я предполагаю, что если кто -то хотел обеспечить более простой переключение, скажем, Oracle [от MS SQL Server), это полезный способ настроить вещи.

Другие советы

Если у вас есть модульные тесты, порт к новым, запустите и видите, если у вас есть Resharper, он может проанализировать ваше решение в Vstudio и указать на ошибки. Это займет время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top