Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Данные таблиц из SQL в DataGridView / 25 сообщений из 51, страница 1 из 3
28.01.2013, 13:32
    #38127177
Данные таблиц из SQL в DataGridView
Здравствуйте!
Есть БД на SQL Server'е. Есть форма в C# с DataGridView и двумя кнопками: "Загрузить данные в DataGridView из БД" и "Добавить новые данные в DataGridView".

Пожалуйста, скажите:
1) Каким образом грамотно работать с SQL Server'ом из C#? (Я не прошу расписывать сложные алгоритмы, так как это долго и вам нет смысла тратить на меня много время. Просто хочется услышать, что-то вроде "Лучше использовать LINQ to SQL" или "Работай с Adapter'ом, bindingSourse'ом и DataSet'ом" или может что-то ещё...)

2) Пожалуйста, скиньте рабочий кусок кода (с комментариями или без них), который реализует работу первой кнопки "Загрузить данные в DataGridView из БД".
Причём, есть две таблицы в БД. Эти две таблицы (из обеих надо выбрать некоторые поля: Реклама.№, Реклама.Тип, Заказ.Месяц) надо поместить в DataGridView.

3) После того, как будет выполнен пункт №2, в DataGridView будет находиться информация из двух таблицах.
Как по нажатию на кнопку "Добавить новые данные в DataGridView" сделать так, чтобы появилась форма с полями идентичными столбцам в DataGridView и после заполнения полей и нажатия на кнопку "ОК" (эту часть я могу реализовать самостоятельно), данные полей записывались в ячейки DataGridView, а также записывались в БД.(а эту часть я НЕ знаю)

Примечание:(это как пример, чтобы было проще объяснить)
Структура БД:
Первая таблица: Реклама (№(PK), Тип, Расположение)
Вторая Таблица: Заказ (№(PK), Месяц, Стоимость)
Между ними связь: один-к-одному.

Столбцы в DataGridView: Реклама.№, Реклама.Тип, Заказ.Месяц


Это мой рабочий вариант реализации пункта №2:(не знаю насколько верно)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        private void button3_Click(object sender, EventArgs e)
        {
            string connectionString = "Data Source=.;Initial Catalog=Vortex;Integrated Security=True";
            string sql = "SELECT * FROM Advertisement"; //здесь берётся ТОЛЬКО ОДНА таблица, а надо две с определенными полями
            SqlConnection connection = new SqlConnection(connectionString);
            SqlDataAdapter dataadapter = new SqlDataAdapter(sql, connection);
            DataSet ds = new DataSet();
            connection.Open();
            dataadapter.Fill(ds, "Adv_table");
            connection.Close();
            dataGridView3.DataSource = ds;
            dataGridView3.DataMember = "Adv_table";
        }



Заранее всем огромное спасибо! Надеюсь на вашу помощь и понимание!
...
Рейтинг: 0 / 0
28.01.2013, 13:38
    #38127195
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
- Уберите ЭТО из button_click
- Используйте using для sqlconnection и не только
- Вам точно нужен SELECT * ?
- RTFM ;)
...
Рейтинг: 0 / 0
28.01.2013, 14:16
    #38127267
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Дмитриев Алексей,

Если приложение из разряда потренироваться, то:
1) Строку соединения в конфиг. Из конфига достается через ConfigurationManager.ConnectionStrings
2) Пример работы соединениями и командами: 13780958
3) Напрямую работать с ADO.NET нежелательно, для этого используется ORM ( Пример )
4) Про датаадаптеры, датасеты забудьте. Биндинг наше всё
5) Работу с БД уберите из формы вообще. Скиньте в отдельную сборку/класс
6) Про using(Dispose) и select * вам уже сказали
...
Рейтинг: 0 / 0
28.01.2013, 14:49
    #38127329
Данные таблиц из SQL в DataGridView
Arm79,

попытаюсь собрать воедино всё, что вы посоветовали:
1) Нельзя выполнять никаких операций с БД в самой форме, при нажатии на кнопки и прочее. Как их скинуть в отдельную сборку/класс? (пожалуйста можно хотя бы минимальный пример)
2) Adapter'ы, DataSet'ы и LINQ to SQL использовать нежелательно. Все вопросы можно решить через bindingSourse.
3) Строку подключения надо убрать в "конфиг" (что это/как это?)
4) Мне надо изменить SQL-запрос, так как мой выводит все атрибуты таблицы.
...
Рейтинг: 0 / 0
28.01.2013, 15:08
    #38127375
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Грубо и только в качестве наброска.
Но в любом случае это гораздо лучше вашего варианта.

Код: c#
1.
2.
3.
4.
5.
        
private void button3_Click(object sender, EventArgs e)
{
    dataGridView3.DataSource = new BindingList<Advertisement>(Repository.Instance.GetAdvertisementList());
}




Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public sealed class Repository
{
private static Repository _repository = new Repository();
public static Repository Instance {get {return _repository;}}

private Repository() {}

public IList<Advertisement> GetAdvertisementList()
{
    using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString))
    {
         // Далее пример я приводил
    }
}
}




App.Config:
Код: xml
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="ConStr" connectionString="Data Source=.;Initial Catalog=Vortex;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>



Дмитриев АлексейМне надо изменить SQL-запрос
Меняйте. Как я понимаю, примеры, которые я привел, вы не посмотрели
...
Рейтинг: 0 / 0
28.01.2013, 16:17
    #38127513
Данные таблиц из SQL в DataGridView
Arm79,
от всего выше сказанного легче не стало(
только ещё больше вопросов.

Пример по Business Logic Toolkit я прочитал. И тоже понятнее не стало.

Я не понимаю последовательности действий, которую мы выполняем, и как следствие не могу разобраться. Пожалуйста, Arm79 , на пальцах попытайтесь объяснить как по этапам производится подключение SQL, подсоединение к DataGridView и т.д.
Arm79 , заранее вам спасибо.
...
Рейтинг: 0 / 0
28.01.2013, 16:23
    #38127531
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Умеете добавлять строку соединения в app.config?
...
Рейтинг: 0 / 0
28.01.2013, 16:46
    #38127577
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
пример - набросок во вложении

Скрипт таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
USE [test]
GO

CREATE TABLE [dbo].[Table_1](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nvarchar](128) NOT NULL,
	[comment] [nvarchar](400) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

...
Рейтинг: 0 / 0
29.01.2013, 07:47
    #38128188
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Дмитриев Алексей,

Вы, главное, не верьте, что
Arm793) Напрямую работать с ADO.NET нежелательно, для этого используется ORM ( Пример )

Рассмотрим пример.
Можно и так, как описано в примере для адо. А можно через ADO и так.
Используя тот пример.

Код: c#
1.
2.
3.
4.
5.
6.
7.
DataTable GetPerson(int personId)
{
DataTable personDt;
personDataAdapter.SelectCommand.Parameters["@personId"] = personId;
personDataAdapter.Fill(personDt) 
return personDt
} 



Неправда ли короче и понятнее, чем ОРМ?
...
Рейтинг: 0 / 0
29.01.2013, 11:49
    #38128493
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Cat2Неправда ли короче и понятнее, чем ОРМ?

Угу. Только не забудьте рассказать, что в SelectCommand и как оно там оказалось...
...
Рейтинг: 0 / 0
29.01.2013, 12:48
    #38128590
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79Cat2Неправда ли короче и понятнее, чем ОРМ?

Угу. Только не забудьте рассказать, что в SelectCommand и как оно там оказалось...Ну, и что не так с SelectCommand?
Недостающий код Вас не затруднит привести в качестве примера аргументации?
Двух строк "на все", думаю, будет достаточно...
...
Рейтинг: 0 / 0
29.01.2013, 12:57
    #38128605
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Cat2Неправда ли короче и понятнее, чем ОРМ?
Бррр...


sphinx_mvНу, и что не так с SelectCommand?
Недостающий код Вас не затруднит привести в качестве примера аргументации?
Двух строк "на все", думаю, будет достаточно...
Специально для тех, кто сильно ухватился за ручник - какая тебе еще нужна аргументация для захардкоженных запросов, без типизации результата, с абсолютно нулевым рефакторингом?
...
Рейтинг: 0 / 0
29.01.2013, 12:58
    #38128606
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mvArm79пропущено...


Угу. Только не забудьте рассказать, что в SelectCommand и как оно там оказалось...Ну, и что не так с SelectCommand?
Недостающий код Вас не затруднит привести в качестве примера аргументации?
Двух строк "на все", думаю, будет достаточно...

мне лень копи-пастить мсдн. общий смысл состоит в том, что в select комманд также присваивается SqlCommand (руками или дизайнером)
...
Рейтинг: 0 / 0
29.01.2013, 13:16
    #38128659
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79sphinx_mvпропущено...
Ну, и что не так с SelectCommand?
Недостающий код Вас не затруднит привести в качестве примера аргументации?
Двух строк "на все", думаю, будет достаточно...

мне лень копи-пастить мсдн. общий смысл состоит в том, что в select комманд также присваивается SqlCommand (руками или дизайнером)А Вы бы все-таки не поленились и проаргументировали свое видение "общего смысла" примерами кода для ADO.NET. И рядышком (тоже сугубо для примера) все то же самое на любом из доступных Вам ORM - хоть "руками", хоть "дизайнером".

Хотя с примером для ADO.NET я Вам помогу - настучу на клавиатуре недостающие 2 (две) строки, которых "не хватало".
Это выглядит примерно как-то вот так:
Код: c#
1.
2.
SqlDataAdapter da = new SqlDataAdapter("select * from person a where a.personId = @personId", "какая-то строка подключения к БД");
da.SelectCommand.Parameters.Add(new SqlParameter("@id", SqlDbType.Int));

Итого - вместе с декларацией метода и уже приведеным для него кодом - целых 7 (семь) строк.
Но уж с ORM-то Вы как-нибудь постарайтесь продемонстрировать "простоту и легкость".
...
Рейтинг: 0 / 0
29.01.2013, 13:26
    #38128696
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mv,

Вы бы пример по ссылочке прочитали:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Person GetPerson(int personId)
{
    using (DbManager db = new DbManager())
    {
        return db
            .SetCommand("SELECT * FROM Person p WHERE p.PersonId = @PersonId",  db.Parameter("@PersonId", personId))
            .ExecuteObject<Person>();
    }
}



Для списка вместо ExecuteObject используется ExecuteList

Как видите, в паре строчек и коннект с базой, и параметризированный запрос, и маппинг объектов, и типизация результата. Профит везде.
...
Рейтинг: 0 / 0
29.01.2013, 13:41
    #38128755
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Person GetPerson(int personId)
{
    using (DbManager db = new DbManager())
    {
        return db
            .SetCommand("SELECT * FROM Person p WHERE p.PersonId = @PersonId",  db.Parameter("@PersonId", personId))
            .ExecuteObject<Person>();
    }
}





Код: c#
1.
2.
3.
4.
5.
6.
7.
public Person GetPerson(int personId)
{
    using (var db = new DbContext())
    {
        return db.Persons.SingleOrDefault(d => d.PersonId == personId);
    }
}
...
Рейтинг: 0 / 0
29.01.2013, 13:42
    #38128759
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mv,
а в чем заморочки, при использования орм, сценарий у всех один
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
namespace Console
{
    class Program
    {
        static void Main()
        {
            new Configure("connect string"); //При старте апликейшен активизирукм комплекс орм

            using (ISession ses = Configure.GetSession())// Получаем конракт на работу из любого места программы, или из любого потока.
            {
                Person p = ses.Query<Person>().Single(p => p.id == 34);//все
            }
        }
    }

    //класс сущности
    [TableName("[person]")]
    class Person
    {
        [PrimaryKey("[id]")]
        public int id { get; set; }
        [ColumnName("[name]")]
        public string Name { get; set; }
         [ColumnName("[Adress]")]
        public string Adress { get; set; }
    }
}


костяк работы, наврядли изменится в ближайшее время.. три строчки
...
Рейтинг: 0 / 0
29.01.2013, 13:43
    #38128760
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Где-то в степиsphinx_mv, а в чем заморочки, при использования орм, сценарий у всех один
Заморочки в его неопытности. В остальном всё хорошо :)
...
Рейтинг: 0 / 0
29.01.2013, 13:51
    #38128784
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79sphinx_mv,

Вы бы пример по ссылочке прочитали:
:) Вы не поверите! Я его ПОЛНОСТЬЮ видел!
Arm79
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
Person GetPerson(int personId)
{
    using (DbManager db = new DbManager())
    {
        return db
            .SetCommand("SELECT * FROM Person p WHERE p.PersonId = @PersonId",  db.Parameter("@PersonId", personId))
            .ExecuteObject<Person>();
    }
}



Для списка вместо ExecuteObject используется ExecuteList

Как видите, в паре строчек и коннект с базой, и параметризированный запрос, и маппинг объектов, и типизация результата. Профит везде.С учетом того, что для работы с экземпляром класса и списком экземпляров нужны разные методы - смело умножаем на два.

И Вы точно ничего не "забыли"? Где описание класса Person ? Или Вы предполагаете, что ваш код "из двух строчек" без нее будет работать? И (как тут некотрые, типа, "намекают") совершенно без ручного рефакторинга в случае изменения запроса?
...
Рейтинг: 0 / 0
29.01.2013, 14:01
    #38128811
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mvИ Вы точно ничего не "забыли"? Где описание класса Person ? Или Вы предполагаете, что ваш код "из двух строчек" без нее будет работать? И (как тут некотрые, типа, "намекают") совершенно без ручного рефакторинга в случае изменения запроса?
Про автогенерацию классов по схеме БД рассказывать, бестолочь?
...
Рейтинг: 0 / 0
29.01.2013, 14:09
    #38128833
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mv,

Уважаемый, воинствующий фанатизм не к лицу никому.

Я со свой стороны привел пример на BLToolkit, максимально приближенный к ADO.NET, чтобы явно неопытный топикстартер хоть-что то понял.
И BLT также совершенно без ручного рефакторинга может работать. И у BLT есть вполне себе реализованный LINQ-провайдер .

sphinx_mvдля работы с экземпляром класса и списком экземпляров нужны разные методы - смело умножаем на два
Смело умножайте на 2 ваше невежество. Чем вам мешает список из одного элемента?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
IList<Person> GetPerson(int personId)
{
    using (DbManager db = new DbManager())
    {
        return db
            .SetCommand("SELECT * FROM Person p WHERE p.PersonId = @PersonId",  db.Parameter("@PersonId", personId))
            .ExecuteList<Person>();
    }
}



Вам привели код из BLT, Entity Framework, NHibernate. Везде кода минимум.
Если вы не умеете пользоваться ОРМ, это не значит, что они плохие. Это значит - вам учиться и учиться.
...
Рейтинг: 0 / 0
29.01.2013, 14:25
    #38128876
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79sphinx_mv, Уважаемый, воинствующий фанатизм не к лицу никому.
Та такой там воинствующий, это унылый фрик :)
sphinx_mv
...
Рейтинг: 0 / 0
29.01.2013, 18:31
    #38129464
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
Arm79sphinx_mv,

Уважаемый, воинствующий фанатизм не к лицу никому.
Улыбнуло...
Arm79Я со свой стороны привел пример на BLToolkit, максимально приближенный к ADO.NET, чтобы явно неопытный топикстартер хоть-что то понял.
Вот мне и интересно: с какой целью Вы пытаелись скрыть (типа, "за ненадобностью") при сравнении с ADO.NET от "явно неопытного топикпастера" необходимость реализации одного из ключевых моментов в Вашем примере, без чего пример становится физически неработотспособен?
Arm79Вам привели код из BLT, Entity Framework, NHibernate. Везде кода минимум.
Вы сравниваете ваш "минимум кода" с ADO.NET и у Вас получилось компактнее?!
Линейку подкорректировать не пробовали?
Arm79Если вы не умеете пользоваться ОРМ, это не значит, что они плохие. Это значит - вам учиться и учиться.Это означает, что мне совершенно перпендикулярна фанатичная вера некоторых "специалистов" в то, что "ORM спасет мир".
На самом деле, использование ORM - попытка скрыть недостаток знаний реляционных СУБД введением дополнительных уровней абстракций. Оно же - сокрытие под наслоениями кило/мегабайтов бесполезного кода личной некомпетентности програмистов-ORMщиков.
...
Рейтинг: 0 / 0
29.01.2013, 18:38
    #38129477
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
МСУsphinx_mvИ Вы точно ничего не "забыли"? Где описание класса Person ? Или Вы предполагаете, что ваш код "из двух строчек" без нее будет работать? И (как тут некотрые, типа, "намекают") совершенно без ручного рефакторинга в случае изменения запроса?
Про автогенерацию классов по схеме БД рассказывать, бестолочь? Расскажите... Или спойте...
Я уже запасся пивом и попкорном...

Вот Вам пример элементарного запроса для одного из самых распрастраненных промышленных серверов БД:
Код: plsql
1.
select * from departments;


Вот Вам таблица:
Код: plsql
1.
2.
3.
4.
5.
6.
create table departments (
dept_id   number(2),
dept_name varchar(20),
budget    number(11, 2),
projects  typ_projects_list
);


Вот Вам один пользовательский тип данных:
Код: plsql
1.
create type typ_project_list as varray (50) of typ_project;


Вот Вам второй пользовательский тип данных:
Код: plsql
1.
2.
3.
4.
5.
create type typ_project as object (
project_no number(2),
title      varchar2(30),
prj_cost   number(7, 2)
);


Хочу работающую "автогенерацию" классов - в Вашем личном исполнении.
...
Рейтинг: 0 / 0
29.01.2013, 19:17
    #38129546
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные таблиц из SQL в DataGridView
sphinx_mvЭто означает, что мне совершенно перпендикулярна фанатичная вера некоторых "специалистов" в то, что "ORM спасет мир".
На самом деле, использование ORM - попытка скрыть недостаток знаний реляционных СУБД введением дополнительных уровней абстракций. Оно же - сокрытие под наслоениями кило/мегабайтов бесполезного кода личной некомпетентности програмистов-ORMщиков.

Улыбнуло :-) Учитывая, что я как раз таки SQL-программист.
sphinx_mvВот мне и интересно: с какой целью Вы пытаелись скрыть (типа, "за ненадобностью")

Я честно просмотрел код и до сих пор не пойму, что именно я попытался скрыть?

sphinx_mv, я начинал с Delphi (c 3 по 7 версию), потом перешел на 2005 студию. Последние несколько лет я занимаюсь MS SQL и приложениями c# под него. И когда речь идет о работе непосредственно с таблицами в обход типизированных данных и ОРМ, я понимаю о чем речь. И с учетом МОЕГО опыта работы с БД я нахожу использование ОРМ гораздо более удобным и качественным.


По поводу автогеренации. Я дружу с MS SQL, уж не взыщите:
1) две таблицы + отношения между ними master-detail
2) все классы сгенерированы автоматом, при генерации модели из БД
3) Для BLT (ниже я для Entity Framework указал) автогенерация может осуществляется, к примеру, утилитой http://code.google.com/p/bltutilsvspackage/ или шаблоном http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=a1e54825-1926-43aa-8b1f-1addbab63b30

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE TABLE [dbo].[Table_1](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[name] [nvarchar](128) NOT NULL,
	[comment] [nvarchar](400) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE TABLE [dbo].[Table_2](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[tbl1_id] [int] NOT NULL,
	[name2] [nvarchar](128) NOT NULL,
	[comment2] [nvarchar](400) NULL,
 CONSTRAINT [PK_Table_2] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


ALTER TABLE [dbo].[Table_2]  WITH CHECK ADD  CONSTRAINT [FK_Table_2_Table_1] FOREIGN KEY([tbl1_id])
REFERENCES [dbo].[Table_1] ([id])
ON UPDATE CASCADE
ON DELETE CASCADE

ALTER TABLE [dbo].[Table_2] CHECK CONSTRAINT [FK_Table_2_Table_1]



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Entity
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    
    public partial class testEntities : DbContext
    {
        public testEntities()
            : base("name=testEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public DbSet<Master> Table_1 { get; set; }
        public DbSet<Detail> Table_2 { get; set; }
    }
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Entity
{
    using System;
    using System.Collections.Generic;
    
    public partial class Detail
    {
        public int id { get; set; }
        public int tbl1_id { get; set; }
        public string name2 { get; set; }
        public string comment2 { get; set; }
    
        public virtual Master Table_1 { get; set; }
    }
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
//------------------------------------------------------------------------------
// <auto-generated>
//    This code was generated from a template.
//
//    Manual changes to this file may cause unexpected behavior in your application.
//    Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Entity
{
    using System;
    using System.Collections.Generic;
    
    public partial class Master
    {
        public Master()
        {
            this.Table_2 = new HashSet<Detail>();
        }
    
        public int Id { get; set; }
        public string Name { get; set; }
        public string Comment { get; set; }
    
        public virtual ICollection<Detail> Table_2 { get; set; }
    }
}



Удачного вам вечера :-)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Данные таблиц из SQL в DataGridView / 25 сообщений из 51, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]