Объект доступа к данным Singleton (Dao) и вспомогательный экземпляр SQL, есть ли здесь какой-то недостаток производительности? - PullRequest
0 голосов
/ 10 июня 2011

Мне нужны комментарии от экспертов. Я пишу свой собственный класс помощника SQL для связи с БД.

Почему я использую это, потому что я пытаюсь

  1. Инкапсулировать логику Ado.Net.
  2. Попробуйте установить общий стандарт для моего разработчика с точки зрения кодирования DAL.
  3. Гибкий и простой в использовании.
  4. Тот же тип кодового блока для подхода с использованием блоков кода SQL Server / Oracle / Access / Excel / Generic Database (SQL Server & Oracle) e.t.c.
  5. Plug & Play или многоразовый подход.

С точки зрения оптимизации кода

  1. Этот вспомогательный класс или сборка соответствует CLS.
  2. Успешно прошел FxCop / Статический анализ кода.

Я даю вам пример блока кода (DAO). Пожалуйста, проверьте ниже

                   using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Data;

        #region include SQL Helper Namespace
        using DBManager;
        #endregion

        #region include SQL Helper Namespace
        using DBManager;
        #endregion


namespace ContentManagementSystem.DataAccessLayer
{
/// <summary>
/// 
/// </summary>
public sealed class DaoContentOwner : DataAccessBase
{
    #region CONSTRUCTOR
    /// <summary>
    /// 
    /// </summary>
    private DaoContentOwner()
    {
        GetInstance = new DaoContentOwner();
    }
    #endregion

    //############################################# M E T H O D S ##########################

    #region Retrieve Content Owner
    /// <summary>
    /// Retrieve Content Owner
    /// </summary>
    /// <returns></returns>
    public static DataTable RetrieveContentOwner()
    {
        DataTable dt = null;

        try
        {
            using (DBQuery dq = new DBQuery("stpGetContentOwner"))
            {

                dt = dq.ResultSetAsDataTable();

                return dt;
            }
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            if (dt != null)
            {
                dt.Dispose();
            }
        }
    }
    #endregion


    //############################################# P R O P E R T Y ########################

    #region READ ONLY PROPERTY
    /// <summary>
    /// GetInstance of DaoContentOwner Class
    /// </summary>
    public static DaoContentOwner GetInstance { get; private set; }
    #endregion
}

}


Обоснование:

" DataAccessBase " Это абстрактный класс. Реализуйте IDisposable интерфейс.

" DBQuery " - это Помощник SQL для Только для SQL Server . Это Запечатанный класс. Он принимает T-SQL / SP в соответствии с потребностями. Откройте закрытое соединение с базой данных. Нет необходимости разбираться с разработчиками.

Почему я создаю DAO Singleton Class, потому что все мои методы в DAO - это статический метод. Заказываю на оптимизацию памяти делаю это Singleton. Это также принцип дизайна.

Примечание: Нуждаются в комментариях. Нужно ли менять дизайн или что-то не так, что нужно исправить.

1 Ответ

0 голосов
/ 10 июня 2011

Лично я бы пошел с:

DALFileItem dalF = new DALFileItem(DSN);
List<FileItem> list = dalF.GetAll(""); 
  • Позволяет получить доступ к нескольким базам данных, не делая статический член DSN.
  • В многопоточной среде только один поток будет иметь доступ к статическому методу.
  • Больше объектно-ориентированного: таким образом вы можете проще добавлять интерфейсы, базовые классы и обобщения.
...