Это правильная реализация шаблона хранилища? - PullRequest
0 голосов
/ 31 октября 2019

У меня следующая ситуация: Мне нужно получить доступ к базе данных и использовать этот доступ для заполнения группы простых объектов данных информацией из нее,Иногда объект данных заполняется одной таблицей , иногда большим количеством таблиц .

Моя реализация на данный момент группирует определенные объекты данных в репозитории , которые связаны друг с другом в том смысле, что они используются вместе в бизнес-логике.

sql-запросы и отображение между ответом из базы данных и объектами данных также выполняются в хранилище.

Это правильная реализация шаблона хранилища?

public class ConnectionStringParametersSQL
    {
        public ConnectionStringParametersSQL(String[] value) {Value = value; }

        public String[] Value {get; set;}

        public static ConnectionStringParametersSQL DB{ get { return new ConnectionStringParametersSQL(new String[]{"xxxx","xxxx","xxxx","xxx","xxx"} ); }}
        public static ConnectionStringParametersSQL DB2 { get { return new ConnectionStringParametersSQL(new String[]{"xxxx","xxxx","xxxx","xxx","xxxx"} ); }}
    }

    public class BaseRepositorySQL 
    {
        private String[] connectionParameters;

        public BaseRepositorySQL(String[] parameters)
        {
            this.connectionParameters = parameters;
        }

        protected Database getDb()
        {
            Database db = new Database();
            db.ConnectMySQL(connectionParameters[0],int.Parse(connectionParameters[1]),connectionParameters[2],connectionParameters[3],connectionParameters[4]);
            return db;
        }
    }

    public class RegelnRepositorySQL : BaseRepositorySQL, IRegelnRepository
    {
        public RegelnRepositorySQL() : base(ConnectionStringParametersSQL.DB.Value){}

        public List<RegelSML> getRegelSMLListByStand(DateTime stand)
        {
            List<RegelSML> regelSMLList = new List<RegelSML>();
            String sStand = stand.Date.ToString("yyyy-MM-dd");

            using(DbDataReader reader = this.getDb().Execute("Select * from xxxxxx 
            xxStand=" + "'" + sStand + "'",false))
            {
                while(reader.Read())
                {
                    RegelSML regelSML = new RegelSML();
                    for(int i = 0; i < reader.FieldCount; i++)
                    {
                        if(reader.GetValue(i) == DBNull.Value) continue;
                        if(reader.GetName(i) == "Stand") regelSML.dateTime = reader.GetDateTime(i);
                        if(reader.GetName(i) == "ID") regelSML.id = reader.GetInt32(i);
                        if(reader.GetName(i) == "SML") regelSML.SML = reader.GetString(i);
                        if(reader.GetName(i) == "Merkmal") regelSML.Merkmal = reader.GetString(i);
                        if(reader.GetName(i) == "Tabelle") regelSML.Tabelle = reader.GetString(i);
                        if(reader.GetName(i) == "Feld") regelSML.Feld = reader.GetString(i);
                        if(reader.GetName(i) == "Format") regelSML.Format = reader.GetString(i);
                    }
                    regelSMLList.Add(regelSML);
                }
                return regelSMLList;
            }
        }

        public List<Regel> getRegelListByStand(DateTime stand)
        {
            long lastRegelID = -1;
            List<Regel> regelList = new List<Regel>();
            String sStand = stand.Date.ToString("yyyy-MM-dd");

            using(DbDataReader reader = this.getDb().Execute("Select * from xxxxxxx=" + "'" + sStand,false))
            {
                while(reader.Read())
                {
                    Regel regel = new Regel();
                    for(int i = 0; i < reader.FieldCount; i++)
                    {
                        if(reader.GetValue(i) == DBNull.Value) continue;
                        if(reader.GetName(i) == "REGEL_ID") regel.ID = reader.GetInt32(i);
                        if(reader.GetName(i) == "kumGruppe") regel.kumGruppe = reader.GetInt64(i);
                        if(reader.GetName(i) == "Verdichten") regel.Verdichten = reader.GetBoolean(i);
                        if(reader.GetName(i) == "Bezeichnung2") regel.sBez2 = reader.GetString(i);
                        if(reader.GetName(i) == "Bezeichnung") regel.sBezl = reader.GetString(i);
                        if(reader.GetName(i) == "tabelle") regel.sTab = reader.GetString(i);
                        if(reader.GetName(i) == "DefaultHaken") regel.defHaken = reader.GetBoolean(i);
                        if(reader.GetName(i) == "pA_Artikel") regel.sArti = reader.GetString(i);
                        if(reader.GetName(i) == "pos") regel.pos = reader.GetInt32(i);
                        if(reader.GetName(i) == "feld") regel.sField = reader.GetString(i);
                        if(reader.GetName(i) == "Menge") regel.sMenge = reader.GetString(i);
                        if(reader.GetName(i) == "STAND") regel.stand = reader.GetDateTime(i);
                    }
                    regelList.Add(regel);
                }
                return regelList;
            }
        }
    }``` 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...