Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2011, 12:25   #1
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию Как использовать LINQ с новыми таблицами (C# MSSQL2005)

Мне надо создать базу данных в которой будет содержаться таблица с полями Name, DateTime, Operation. Столбец Name - содержит фамилию (текстовый), DateTime - дату и время операции (datetime), Operation - название действия и его характеристика (текстовое). Так вот связи с тем что пользователь производит много действий (порядка 50000 в день), то таблица получается очень большой и медленно работающей. Я решил на каждого пользователя, а их будет немного (3-5 штук), создавать отдельную таблицу на один день, а список этих вспомогательных таблиц хранить в таблице учета. В результате у меня должно получится много таблиц с именами типа Иванов_01012011 (Имя+ дата) и таблица учета где будут поля Имя, Дата, Название_таблицы.
При реализации таким способом столкнулся с такой проблеммой:
чтобы использовать возможности LINQ надо создавать класс (из примера)
Код:
        [Table(Name = "Customers")]//Имя таблицы к которой привязан класс
        public class Customer//Имя класса
        {

            string _CustomerID; //переменная для хранения данных из столбца
            [Column(IsPrimaryKey = true, Storage = "_CustomerID")]
            public string CustomerID//инкапсуляция переменной.
            {
                get{return this._CustomerID;}
                set{this._CustomerID = value;}
            }
            string _City;
            [Column(Storage = "_City")]
            public string City
            {
                get{return this._City;}
                set{this._City = value;}
            }
Так вот там имя таблицы уже прописанно перед заголовком, а у меня имя таблицы заранее не известно, оно будет браться из таблице учета, при этом структура вспомогательных таблиц везде одинаковая.
Как мне работать с вновь созданными таблицами используя LINQ?
P.S. Если вы считаете что я неправильно выбрал структуру базы данных, то предлжите другое решение.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 27.09.2011, 12:46   #2
Manolla
 
Регистрация: 27.09.2011
Сообщений: 8
По умолчанию

А если передавать это имя как параметр в класс (а до этого его узнавать)? пусть это будет статическим параметром в классе и при его создании доставать его из БД?
хотя, производительность немного падает учитывая 5000 в день.
Manolla вне форума Ответить с цитированием
Старый 28.09.2011, 13:33   #3
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

А как програмно изменить свойство атрибута класса?
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 28.09.2011, 14:47   #4
Manolla
 
Регистрация: 27.09.2011
Сообщений: 8
По умолчанию

Если это класс не полный, то вышлите полный листинг кода.
А я говорю про это:lic c
1 вариант
pub
Код:
public class Customer
        {
            //...
            string tablName { get; set; } //имя таблицы
            //...
            //конструктор класса
            Customer(string tName)
            {
                tablName = tName;
            }
            //...
        }
2 вариант: если в класс надо передавать не таблицу а ID пользователя
(тут даже более перспективнее):
Код:
        public class Customer
        {
            int CustomerID { get; set; }
            //...
            //конструктор класса
            Customer(int id)
            {
                CustomerID = id;
            }
            //...методы
            public string FindTable(int CustomerID)
            {
                return "имя найденной таблицы по определённым критериям";
            }
            public string CreateTable(int CustomerID)
            {
                return "им таблицы";
            }
            public bool DelTable(string TableName)
            {
                bool i = false;
                //операции в зависимости от рез-тата возвращает значение
                return i;
            }
        }
изменить свойство атрибута класса
Переписать класс(просто изменить атрибут или там можешь наследовать от него если он не закрыт), а зачем в данном случае его тебе менять.
Manolla вне форума Ответить с цитированием
Старый 03.10.2011, 11:15   #5
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

[Table(Name = "Customers")]
public class Customer//Имя класса
То что выделено жирным является атрибутом класса. Тость в классе присутствует атрибут Table с полем Name в которое записывается значение, в данном случае имя нужной нам таблицы. Осталось разобраться как его програмно менять.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать расстояние между таблицами в интернет-странице? FACE OFF Помощь студентам 9 26.12.2010 18:55
Как посмотреть связи между таблицами в php? Alar WordPress и другие CMS 2 15.11.2010 11:21
Есть ли в Delphi 2010 LINQ как в VS? GenniY Свободное общение 10 24.06.2010 13:58
как работать с новыми CheckBox в ListView в режиме vsReport cybopob90 Компоненты Delphi 2 24.03.2009 13:02
Как работать с новыми окнами? proglamer Паскаль, Turbo Pascal, PascalABC.NET 9 15.10.2007 23:21