powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопросы по подключению БД
10 сообщений из 10, страница 1 из 1
Вопросы по подключению БД
    #38148542
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. У меня несколько вопросов)
1. Создал большую БД в MSSQL Server 2012. Сделал одно тестовое представление... Добавляю в VS2012 БД через Entity Data Model. А у меня вот такая ошибка вылезает после добавления:

Error 6002: В таблице или представлении "C:\USERS\ALEXANDER\DESKTOP\STROYMAG\STROYMAG.MDF.dbo.Вот" не определен первичный ключ. Ключ был выведен, а определение таблицы или представления было создано в режиме только для чтения. C:\Users\Alexander\Desktop\StroyMag\StroyMag\StroyMag\Model1.edmx

Что это такое?

2. Потом пытался подключиться к БД так:
Код: 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.
32.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string CommandText = "SELECT Класс FROM Ламинат";
            string ConnectionString = @"Data Source=.\SQLEXPRESS,AttachDbFilename=" + @"D:\ПО\StroyMag.mdf" + "Integrated Security=True;Connect Timeout=30;User Instance=True";
 
            SqlDataAdapter dataAdapter = new SqlDataAdapter(CommandText, ConnectionString);
 
            DataSet ds = new DataSet();
            dataAdapter.Fill(ds, "Ламинат");
            dataGridView1.DataSource = ds.Tables["Ламинат"].DefaultView;
                   
        }
       
    }

} 


Ошибка следующая:При установлении соединения с SQL Server произошла ошибка, связанная с сетью или с определенным экземпляром. Сервер не найден или недоступен. Убедитесь, что имя экземпляра указано правильно и что на SQL Server разрешены удаленные соединения. (provider: SQL Network Interfaces, error: 25 - Недопустимая строка подключения)

Я подключался не к серверу, а к файлу базы данных SQL.. Может здесь ошибка Data Source=.\SQLEXPRESS?


Как вообще можно подключить БД? Я пытаюсь работать с БД на WPF... Но не получается подключить ни там, ни на WinForms....

3. И еще вопрос, чтобы новую тему не создавать...Какая последняя версия по ADO.NET? 3.5? Какой тогда учебник можно почитать, чтобы с нуля..по 3.5 нашел только один, и то на английском..пойдет по 2.0?
И еще. Отличается ли написание когда на WPF и WinForms?



Спасибо большое заранее.. Извиняюсь что столько вопросов..
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148607
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panda30Здравствуйте. У меня несколько вопросов)
1. Создал большую БД в MSSQL Server 2012. Сделал одно тестовое представление... Добавляю в VS2012 БД через Entity Data Model. А у меня вот такая ошибка вылезает после добавления:

Error 6002: В таблице или представлении "C:\USERS\ALEXANDER\DESKTOP\STROYMAG\STROYMAG.MDF.dbo.Вот" не определен первичный ключ. Ключ был выведен, а определение таблицы или представления было создано в режиме только для чтения. C:\Users\Alexander\Desktop\StroyMag\StroyMag\StroyMag\Model1.edmx

Что это такое?



Это значит, что таблица без первичного ключа. Например.



Код: sql
1.
2.
3.
4.
CREATE TABLE [dbo].[Table_1](
	[zzz] [nchar](10) NOT NULL,
	[data] [nchar](10) NOT NULL
) ON [PRIMARY]



В этом случае, дизайнер EDM генерит в Storage модели read-only вьюху
Код: sql
1.
2.
3.
4.
5.
6.
7.
<EntitySet Name="Table_1" EntityType="DB1Model.Store.Table_1" store:Type="Tables" store:Schema="dbo" store:Name="Table_1">
	<DefiningQuery>SELECT 
	  [Table_1].[zzz] AS [zzz], 
	  [Table_1].[data] AS [data]
	  FROM [dbo].[Table_1] AS [Table_1]
	</DefiningQuery>
</EntitySet>



Считает ключем все колонки твоей таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
        <EntityType Name="Table_1">
          <Key>
            <PropertyRef Name="zzz" />
            <PropertyRef Name="data" />
          </Key>
          <Property Name="zzz" Type="nchar" Nullable="false" MaxLength="10" />
          <Property Name="data" Type="nchar" Nullable="false" MaxLength="10" />
        </EntityType>



о чем и говорит:

"...
Message 1 The table/view 'DB1.dbo.Table_1' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. Model1.edmx 0 1 ConsoleApplication27
..."



Определите в своей таблице в схеме БД первичный ключ для таблицы dbo.Вот
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148609
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lord British, Вот - это запрос, а не таблица... а там первичный ключ зачем..?
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148610
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lord British, да и Вот - запрос тестовый. Я делал из одной таблицы его, в котором есть первичный ключ. И в запрос добавил все поля. В том числе и ключевое поле
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148621
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panda30Lord British, да и Вот - запрос тестовый. Я делал из одной таблицы его, в котором есть первичный ключ. И в запрос добавил все поля. В том числе и ключевое поле

Вьюха чтоли? С этого и следовало начать.

Это не ошибка. Он генерит предупреждение, что сам определил ключ для твоего импортированного View. Ключ необходим для EF для правильной работы его кишок хотябы для его IdentityMap.

Если для вашей View ID остался ключем отметьте только его вручную в дизайнере как ключем.

в edmx выкиньте вручную у соответствующего определения Entity теги <DefiningQuery/> и она перестанет быть реадонли и будет генерить CRUD как для таблицы. Как вы это рулите на уровне БД ей до лампочки.
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148624
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lord British, Спасибо:) а в дизайнере он был как первичный ключ обозначен))
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148630
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panda30Lord British, Спасибо:) а в дизайнере он был как первичный ключ обозначен))

он мог автоматом сгенерить ключ из всех полей таблицы. обратите на это внимание, другие поля не помечены как часть ключа? :).
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148632
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lord British, Неа)другие нормально) а вот еще не подскажете) я просто новичок. Курсач задали делать. А мне понравилось работать с БД. вот и хочу научиться)
Вот я запрос вывел, а мне, например, какие то столбцы не нужны.. Где мне их убрать?) на WinForms было свойство, насколько я помню. Прям через интерфейс VS.. а как здесь можно, может через код, убрать лишние столбцы?)
Вообще к запросу я так цепляюсь..
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
namespace WpfApplication2
{
    
    public partial class MainWindow : Window
    {
        StroyMagEntities data = new StroyMagEntities();
        public MainWindow()
        {
            InitializeComponent();
            IEnumerable<Вот> Вот = data.Вот;
            data1.ItemsSource = data.Вот.ToArray();        }
    }
}


Это правильно?)или как то по другому надо?)
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148638
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
panda30,

выводите только то что нужно

[xml]
<Window x:Class="WpfApplication1.MainWindow"
xmlns=" http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=" http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Col1" Binding="{Binding Col1Property}"></DataGridTextColumn>
<DataGridTextColumn Header="Col2" Binding="{Binding Col2Property}"></DataGridTextColumn>
<DataGridTextColumn Header="Col3" Binding="{Binding Col3Property}"></DataGridTextColumn>
<DataGridTextColumn Header="Col4" Binding="{Binding Col4Property}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

[/xml]
...
Рейтинг: 0 / 0
Вопросы по подключению БД
    #38148643
panda30
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lord British, а вот сюда что надо вписать?
Binding="{Binding Col1Property }"? Как указать, что мне надо именно из определенной таблицы выбрать? И тогда код на C# тот не нужен?
У меня таблица Вот, например. Называются столбцы Первый и Второй. А мне надо, например, чтобы только столбец "Второй" выводился..
Извините за тупые вопросы.. Просто даже элементарно учебник по ADO.NET 3.5 не могу найти( вот и приходится тупить...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Вопросы по подключению БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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