2016-11-15 6 views
1

Мне нужно создать новую таблицу базы данных для хранения некоторых бизнес-правил, однако это будет незадолго до ее реализации (нужен DBA). Тем временем я хотел воссоздать данные, хранящиеся в моем коде, чтобы я мог продолжить кодирование и тестирование, а затем перейти к базе данных, когда-либо готовой.Как издеваться над структурой таблицы базы данных в моем коде C#

Примером может служить структура таблицы с 10 столбцами, при этом первые четыре столбца содержат уникальные комбинации, которые я использовал бы, чтобы вытащить связанные значения в последних 6 столбцах.

E.g. Компания, штат, тип, номер (у меня были бы значения для), затем столбец 5, столбец 6, столбец 7, столбец 8, столбец 9, столбец 10, который я тогда вытащил бы значения.

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

Я знаю, что это расплывчато, но надеясь, что кто-то может указать мне в правильном направлении структуры данных, которую я мог бы использовать (это только бэкэнд, кстати, мне не нужно показывать пользователю).

+3

Просто используйте что-то вроде хранилища шаблона, который возвращает фиктивные данные до тех пор, пока у вас есть DB на месте. Ваша структура БД должна быть независимой от ваших объектных моделей. –

+2

Администраторы баз данных не пишут код, они администрируют базы данных: O – Kritner

ответ

1

Предполагая, что вы не используете ORM, в идеале вы хотите использовать repository pattern, поскольку оба @DarrenYoung комментировали и @axlj предоставили ответ. Вы не должны плотно присоединяться к вашему слою данных с помощью вашего прикладного уровня, и этот шаблон не позволит вам это сделать.

Однако, если вы буквально просто хотите издеваться над таблицей базы данных, вы можете использовать классы DataSet и DataTable, которые предоставляют соответственно базы данных в виде базы данных и табличные структуры данных.

Создание таблицы будет так же просто, как это:

DataTable myTable = new DataTable("myTable"); 
DataColumn[] key = new DataColumn[4]; 
key[0] = new DataColumn("Company", typeof(string)); 
key[1] = new DataColumn("State", typeof(string)); 
key[2] = new DataColumn("Type", typeof(string)); 
key[3] = new DataColumn("Number", typeof(int)); 
myTable.Add(key[0]); 
myTable.Add(key[1]); 
myTable.Add(key[2]); 
myTable.Add(key[3]); 
myTable.Add(new DataColumn("Column6", typeof(string))); 
myTable.Add(new DataColumn("Column7", typeof(string))); 
myTable.Add(new DataColumn("Column8", typeof(string))); 
myTable.Add(new DataColumn("Column9", typeof(string))); 
myTable.Add(new DataColumn("Column10", typeof(string))); 
myTable.PrimaryKey = key; 

Вы можете сделать намного больше с DataTables, но это только основы, необходимые для его настройки. Кроме того, вы упомянули HashTables может иметь только один ключ, однако вы можете использовать Tuple для ключа объединяются несколько значений, например:

var myHashTable = new HashSet<Tuple<string,string,string,int>, object>(); 
//Create a key 
var key1 = Tuple.Create<string,string,string,int>("blah INC", "NY", "blah", 15); 
myHashTable.Add(key1, myObject); 
+0

Это именно то, что я ищу !!! Большое спасибо за вашу помощь. – user2026086

+0

@ user2026086 Нет проблем, удачи! – JNYRanger

0

Программа для взаимодействия с услугами и репозиториями.

Например:

Создать ICompanyRepository:

interface ICompanyRepository 
{ 
    IEnumerable<Company> GetCompanies(); 
} 

class DummyCompanyRepository : ICompanyRepository 
{ 
    private Dictionary<int, Company> _data; 

    public DummyCompanyRepository() 
    { 
     //populate your dictionary 
    } 
    public IEnumerable<Company> GetCompanies() 
    { 
     // return all dictionary.values; 
    } 
} 

Затем контроллер (или услуга) может занять ICompanyRepository и после того, как администратор базы данных доступен, вы можете торговать наши DummyRepositories для ConcreteRepositories.

+0

Спасибо за предложение, я буду помнить об этом! – user2026086

 Смежные вопросы

  • Нет связанных вопросов^_^