Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
1

Ошибка при сложном запросе к БД (не найден столбец PROGRAMMId)

22.11.2019, 09:18. Показов 4803. Ответов 50
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Работаю по примеру Модели со сложной структурой

Есть две таблицы SPR_PROGRAM (названия программ) и SPR_FINANS_PROGRAM (суммы по программе). Хочу вывести на одной странице таблицу в которой будет список программ с суммой по каждой из них. Таким образом пример подходит, где Player это мои программы, а Team - суммы (суммы могут быть разными, т.к. имеют дополнительный атрибут по статусу - утверждена/проектная и т.д.).

Модель
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
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
 
namespace WebKSP.Models
{
    public class BudjetModel
    {
 
    }
 
    public class SPR_FINANS_PROGRAM
    {
        [Key]
        public System.Guid Id { get; set; }
        [ForeignKey("Id")]
        public System.Guid GUID_PROG { get; set; }
        public Nullable<decimal> SUM_PLAN { get; set; }
        public Nullable<decimal> SUM_FINANS { get; set; }
        public SPR_PROGRAM SPR_PROGRAM { get; set; }
        //public IEnumerable<SPR_PROGRAM> SPR_PROGRAM { get; set; }
    }
 
    public class SPR_PROGRAM
    {
        [Key]
        public System.Guid Id { get; set; }
        public System.Guid GUID_ORG { get; set; }
        public string NAME { get; set; }
        public System.Guid STATUS { get; set; }
 
        public IEnumerable<SPR_FINANS_PROGRAM> SPR_FINANS_PROGRAM { get; set; }
    }
}
Контекст
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using WebKSP.Models;
 
namespace WebKSP.Data
{
    public class ModelDbContext : IdentityDbContext
    {
        public ModelDbContext(DbContextOptions<ModelDbContext> options)
            : base(options)
        {
        }
 
        public DbSet<SPR_FINANS_PROGRAM> SPR_FINANS_PROGRAM { get; set; }
        public DbSet<SPR_PROGRAM> SPR_PROGRAM { get; set; }
    }
}
Скрипты создания таблиц в БД
Кликните здесь для просмотра всего текста

Таблица SPR_PROGRAM
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
USE [WebKSP]
GO
 
/****** Object:  Table [dbo].[SPR_ORG]    Script Date: 05.11.2019 14:40:30 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[SPR_PROGRAM](
    [Id] UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
    [GUID_ORG] [uniqueidentifier] NOT NULL,
    [NAME] [nvarchar](1000) NULL,
    [STATUS] [uniqueidentifier] NOT NULL,
) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[SPR_PROGRAM]
ADD CONSTRAINT FK_GUID_ORG FOREIGN KEY ([GUID_ORG]) REFERENCES [dbo].[SPR_ORG] ([Id])
GO
 
ALTER TABLE [dbo].[SPR_PROGRAM]
ADD CONSTRAINT FK_STATUS FOREIGN KEY ([STATUS]) REFERENCES [dbo].[SPR_STATUS_PROGRAM] ([Id])
GO
 
INSERT INTO [dbo].[SPR_PROGRAM]
           ([GUID_ORG]
           ,[NAME],[STATUS])
     VALUES
           ('93F0B678-AFFF-E911-9C17-04D4C46926FF',
           'Развитие дорожного хозяйства на 2018 - 2020 годы',
           '12E57D7D-C5FF-E911-9C17-04D4C46926FF')
GO
 
INSERT INTO [dbo].[SPR_PROGRAM]
           ([GUID_ORG]
           ,[NAME],[STATUS])
     VALUES
           ('93F0B678-AFFF-E911-9C17-04D4C46926FF',
           'Развитие дорожного хозяйства на 2018 - 2020 годы',
           '13E57D7D-C5FF-E911-9C17-04D4C46926FF')
GO
Таблица SPR_FINANS_PROGRAM
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
29
30
31
USE [WebKSP]
GO
 
/****** Object:  Table [dbo].[SPR_ORG]    Script Date: 05.11.2019 14:40:30 ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[SPR_FINANS_PROGRAM](
    [Id] UNIQUEIDENTIFIER PRIMARY KEY DEFAULT NEWSEQUENTIALID(),
    [GUID_PROG] [uniqueidentifier] NOT NULL,
    [SUM_PLAN] [DECIMAL](18, 3) NULL,
    [SUM_FINANS] [DECIMAL](18, 3) NULL,
    ) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[SPR_FINANS_PROGRAM]
ADD CONSTRAINT FK_SPR_FINANS_PROGRAM_child FOREIGN KEY ([GUID_PROG]) REFERENCES [dbo].[SPR_PROGRAM] ([Id])
GO
 
INSERT INTO [dbo].[SPR_FINANS_PROGRAM]
           ([GUID_PROG]
           ,[SUM_PLAN]
           ,[SUM_FINANS])
     VALUES
           ('77DE7914-C9FF-E911-9C17-04D4C46926FF'
           ,1234.123
           ,1234.456)
GO


Контролер. Для вывода таблицы использую Index(). HTML шаблон думаю приводить нет смысла.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WebKSP.Data;
 
namespace WebKSP.Controllers
{
    public class BudjetController : Controller
    {
        private readonly ModelDbContext _context;
 
        public BudjetController(ModelDbContext contextA)
        {
            _context = contextA;
        }
 
        // GET: Budjet
        public ActionResult Index()
        {
            //return View(_context.SPR_BUDJET_SECTION_NAME.ToList());
 
            //var programms = _context.SPR_PROGRAM.Include(p => p.);
            var programms = _context.SPR_FINANS_PROGRAM.Include(p => p.SPR_PROGRAM);
 
            //var fin = _context.SPR_PROGRAM.Include(o => o.SPR_FINANS_PROGRAMs);
            return View(programms.ToList());
            //return View(fin.ToList());
        }
 
        // GET: Budjet/Details/5
        public ActionResult Details(int id)
        {
            return View();
        }
 
        // GET: Budjet/Create
        public ActionResult Create()
        {
            return View();
        }
 
        // POST: Budjet/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(IFormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
 
                return RedirectToAction(nameof(Index));
            }
            catch
            {
                return View();
            }
        }
 
        // GET: Budjet/Edit/5
        public ActionResult Edit(int id)
        {
            return View();
        }
 
        // POST: Budjet/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(int id, IFormCollection collection)
        {
            try
            {
                // TODO: Add update logic here
 
                return RedirectToAction(nameof(Index));
            }
            catch
            {
                return View();
            }
        }
 
        // GET: Budjet/Delete/5
        public ActionResult Delete(int id)
        {
            return View();
        }
 
        // POST: Budjet/Delete/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Delete(int id, IFormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here
 
                return RedirectToAction(nameof(Index));
            }
            catch
            {
                return View();
            }
        }
    }
}
Компилируется без ошибок. При попытке загрузки страницы с таблицей выпадает ошибка
Код
+		$exception	{"Недопустимое имя столбца \"SPR_PROGRAMId\".\r\nНедопустимое имя столбца \"SPR_PROGRAMId\"."}	Microsoft.Data.SqlClient.SqlException
По гуглу непонятно в чем может быть проблема. Кто-то говорит навигационные ключи нужно прописать в БД, кто-то говорит, что их нужно прописывать в коде модели. Эти подсказки не сработали.
Вроде все что видел, уже проверил. Контекст работает. Модели работают - простые данные получаются без проблем. Сложный запрос вроде как в примере. Почему при сложном запросе происходит объединение имени таблицы и столбца, я не понимаю.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2019, 09:18
Ответы с готовыми решениями:

Сортировка в сложном запросе
Ребята помогите, есть запрос, нужно чтобы при выборке из таблицы goods товар сортировался в...

Переменная в переменной в сложном запросе к БД.
У меня сложный запрос в БД &lt;% MyYear = Request.QueryString('MyYears') MyMonth =...

SQLLite3: Boolean в сложном select запросе
Всем здравствуйте. Возникла проблема с написанием SELECT-запроса к таблице, в котором много...

Примение LIKE к составному полю в сложном запросе (с inner join)
Привет. Есть следующий запрос SELECT `c`.`id`, concat(`c`.`firstname`, ' ', `c`.`lastname`, '...

50
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 09:34 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от defond57 Посмотреть сообщение
Я не могу найти, где это смотреть.
Это можно посмотреть средствами самой СУБД или утилит сопутствующих. Если у вас стоит SQL Management Studio, то с ним ставится и профилировщик:

Ошибка при сложном запросе к БД (не найден столбец PROGRAMMId)


Там все запросы видны. По ним вы много можете узнать о EF.
1
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 09:48  [ТС] 22
Цитата Сообщение от Usaga Посмотреть сообщение
посмотрите какой запрос в базу летит и из этого уже делайте выводы.
Код
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
      FROM (
          SELECT TOP(1) [s].[Id], [s].[NAME]
          FROM [SprOrg] AS [s]
          WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF'
      ) AS [t]
      LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
      ORDER BY [t].[Id], [s0].[Id]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view TeamDetails.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.BudjetController.TeamDetails (WebKSP) in 225.7324ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.BudjetController.TeamDetails (WebKSP)'
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.NullReferenceException: Object reference not set to an instance of an object.
   at AspNetCore.Views_Budjet_TeamDetails.ExecuteAsync() in 
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [s].[Id], [s].[NAME], [s].[SprOrgId], [s].[SprStatusProgId], [s0].[Id], [s0].[NAME]
      FROM [SprProg] AS [s]
      LEFT JOIN [SprOrg] AS [s0] ON [s].[SprOrgId] = [s0].[Id]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view Index.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
      Executed ViewResult - view Index executed in 422.7429ms.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.BudjetController.Index (WebKSP) in 1025.5789ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.BudjetController.Index (WebKSP)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 1592.2702000000002ms 200 text/html; charset=utf-8
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2.0 GET https://localhost:44311/Budjet/TeamDetails/E066DE74-F166-4F50-AF7A-BC29E11B8520  
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.0.0 initialized 'ApplicationDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[@__p_0='?' (Size = 450)], CommandType='Text', CommandTimeout='30']
      SELECT TOP(1) [a].[Id], [a].[AccessFailedCount], [a].[ConcurrencyStamp], [a].[Email], [a].[EmailConfirmed], [a].[LockoutEnabled], [a].[LockoutEnd], [a].[NormalizedEmail], [a].[NormalizedUserName], [a].[PasswordHash], [a].[PhoneNumber], [a].[PhoneNumberConfirmed], [a].[SecurityStamp], [a].[TwoFactorEnabled], [a].[UserName]
      FROM [AspNetUsers] AS [a]
      WHERE ([a].[Id] = @__p_0) AND @__p_0 IS NOT NULL
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[@__user_Id_0='?' (Size = 450)], CommandType='Text', CommandTimeout='30']
      SELECT [a].[Id], [a].[ClaimType], [a].[ClaimValue], [a].[UserId]
      FROM [AspNetUserClaims] AS [a]
      WHERE ([a].[UserId] = @__user_Id_0) AND @__user_Id_0 IS NOT NULL
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'WebKSP.Controllers.BudjetController.TeamDetails (WebKSP)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
      Route matched with {action = "TeamDetails", controller = "Budjet", page = "", area = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult TeamDetails() on controller WebKSP.Controllers.BudjetController (WebKSP).
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.0.0 initialized 'ModelDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
      FROM (
          SELECT TOP(1) [s].[Id], [s].[NAME]
          FROM [SprOrg] AS [s]
          WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF'
      ) AS [t]
      LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
      ORDER BY [t].[Id], [s0].[Id]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view TeamDetails.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
      Executed ViewResult - view TeamDetails executed in 91.23620000000001ms.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.BudjetController.TeamDetails (WebKSP) in 218.4068ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.BudjetController.TeamDetails (WebKSP)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 994.2748ms 200 text/html; charset=utf-8
Starting IIS Express ...
Successfully registered URL "http://localhost:58432/" for site "WebKSP" application "/"
Successfully registered URL "https://localhost:44311/" for site "WebKSP" application "/"
Registration completed for site "WebKSP"
IIS Express is running.
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\defon\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: D:\Prototype\Csharp\WebKSP\WebKSP\WebKSP
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2.0 GET https://localhost:44311/  
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'WebKSP.Controllers.HomeController.Index (WebKSP)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
      Route matched with {action = "Index", controller = "Home", page = "", area = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.IActionResult Index() on controller WebKSP.Controllers.HomeController (WebKSP).
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SUMM' on entity type 'SprBudjetFinans'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SumFinans' on entity type 'SprFinansProg'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SumPlan' on entity type 'SprFinansProg'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SumFinans' on entity type 'SprFinansSection'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SumPlan' on entity type 'SprFinansSection'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.0.0 initialized 'ApplicationDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[@__userId_0='?' (Size = 450)], CommandType='Text', CommandTimeout='30']
      SELECT TOP(1) [s].[Id], [s].[AspNetUsersId], [s].[SprOrgId]
      FROM [SprUserOrg] AS [s]
      WHERE (([s].[AspNetUsersId] = @__userId_0) AND ([s].[AspNetUsersId] IS NOT NULL AND @__userId_0 IS NOT NULL)) OR ([s].[AspNetUsersId] IS NULL AND @__userId_0 IS NULL)
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      WHERE (([s].[SprOrgId] = @__orgID_0) AND @__orgID_0 IS NOT NULL) AND (CONVERT(VARCHAR(36), [s].[SprStatusProgId]) = N'602F2F57-870F-EA11-9C1D-04D4C46926FF')
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [s].[Id], [s].[NAME], [s].[SprOrgId], [s].[SprStatusProgId]
      FROM [SprProg] AS [s]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view Index.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
      Executed ViewResult - view Index executed in 1102.5218ms.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.HomeController.Index (WebKSP) in 14168.301500000001ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.HomeController.Index (WebKSP)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 16728.838ms 200 text/html; charset=utf-8
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2.0 GET https://localhost:44311/Budjet  
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'WebKSP.Controllers.BudjetController.Index (WebKSP)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
      Route matched with {action = "Index", controller = "Budjet", page = "", area = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult Index() on controller WebKSP.Controllers.BudjetController (WebKSP).
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SUM_FINANS' on entity type 'Player'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
warn: Microsoft.EntityFrameworkCore.Model.Validation[30000]
      No type was specified for the decimal column 'SUM_PLAN' on entity type 'Player'. This will cause values to be silently truncated if they do not fit in the default precision and scale. Explicitly specify the SQL server column type that can accommodate all the values using 'HasColumnType()'.
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.0.0 initialized 'ModelDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [s].[Id], [s].[NAME], [s].[SprOrgId], [s].[SprStatusProgId], [s0].[Id], [s0].[NAME]
      FROM [SprProg] AS [s]
      LEFT JOIN [SprOrg] AS [s0] ON [s].[SprOrgId] = [s0].[Id]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view Index.
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[4]
      Executed ViewResult - view Index executed in 613.7032ms.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.BudjetController.Index (WebKSP) in 1543.5218ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.BudjetController.Index (WebKSP)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 1768.2417ms 200 text/html; charset=utf-8
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2.0 GET https://localhost:44311/Budjet/TeamDetails/E066DE74-F166-4F50-AF7A-BC29E11B8520  
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'WebKSP.Controllers.BudjetController.TeamDetails (WebKSP)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
      Route matched with {action = "TeamDetails", controller = "Budjet", page = "", area = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult TeamDetails() on controller WebKSP.Controllers.BudjetController (WebKSP).
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 3.0.0 initialized 'ModelDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
info: Microsoft.EntityFrameworkCore.Database.Command[20100]
      Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
      FROM (
          SELECT TOP(1) [s].[Id], [s].[NAME]
          FROM [SprOrg] AS [s]
          WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF'
      ) AS [t]
      LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
      ORDER BY [t].[Id], [s0].[Id]
info: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[1]
      Executing ViewResult, running view TeamDetails.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
      Executed action WebKSP.Controllers.BudjetController.TeamDetails (WebKSP) in 788.9758ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'WebKSP.Controllers.BudjetController.TeamDetails (WebKSP)'
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.NullReferenceException: Object reference not set to an instance of an object.
   at AspNetCore.Views_Budjet_TeamDetails.ExecuteAsync() in D:\Prototype\Csharp\WebKSP\WebKSP\WebKSP\Views\Budjet\TeamDetails.cshtml:line 29
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ActionContext actionContext, IView view, ViewDataDictionary viewData, ITempDataDictionary tempData, String contentType, Nullable`1 statusCode)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)
   at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 2121.5708ms 500 text/html; charset=utf-8
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 09:57 23
defond57, не обязательно было всю портянку выкладывать, чтобы показать один запрос:

SQL
1
2
3
4
5
6
7
8
      SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
      FROM (
          SELECT TOP(1) [s].[Id], [s].[NAME]
          FROM [SprOrg] AS [s]
          WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF'
      ) AS [t]
      LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
      ORDER BY [t].[Id], [s0].[Id]
Как видите, запрос с GUID'ами получается неэффективный. Выражение CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF' не будет использовать кластерный индекс первичного ключа. Но JOIN здесь присутствует и он правильный.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 09:57  [ТС] 24
Цитата Сообщение от Usaga Посмотреть сообщение
Это можно посмотреть средствами самой СУБД или утилит сопутствующих

Код
SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
FROM (
    SELECT TOP(1) [s].[Id], [s].[NAME]
    FROM [SprOrg] AS [s]
    WHERE ([s].[Id] = @__id_0) AND @__id_0 IS NOT NULL
) AS [t]
LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
ORDER BY [t].[Id], [s0].[Id]',N'@__id_0 uniqueidentifier',@__id_0='F226979C-890F-EA11-9C1D-04D4C46926FF'
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 09:58 25
Уберите эту чушь с GUID'ами. Вы мне так и не смогли объяснить, что вам мешает в использовании целых чисел в виде ключей. А значит весомой причины и нет. Зато фиговые запросы - пожалуйста. Что в коде неудобства, что в запросах ерунда.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 09:59  [ТС] 26
Код
SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
FROM (
    SELECT TOP(1) [s].[Id], [s].[NAME]
    FROM [SprOrg] AS [s]
    WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF'
) AS [t]
LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
ORDER BY [t].[Id], [s0].[Id]
И правда возвращается пустой запрос...

Спасибо, буду пытаться
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 09:59 27
defond57, JOIN присутствует. Если коллекция связанных данных пуста, значит и самих связанных данных нет. Можете это проверить выполнив полученный запрос вручную через SQL Management Studio.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 10:04  [ТС] 28
Цитата Сообщение от Usaga Посмотреть сообщение
Что в коде неудобства, что в запросах ерунда
Мне правда с гуидами комфортнее. Вот даже сейчас я бы долго разбирался Id=1 какой таблице принадлежит. А по гуидам я сразу увидел, что запрос неверный.

SQL
1
2
3
4
5
WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'F226979C-890F-EA11-9C1D-04D4C46926FF' // Тут неверный Id
 
// Должно быть
 
WHERE CONVERT(VARCHAR(36), [s].[Id]) = N'DB28CDF9-870F-EA11-9C1D-04D4C46926FF'
У меня на странице в ссылке в GET запрос становиться Id не той таблицы. Сейчас попробую поправить и будет видно.
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 10:17 29
defond57, о боже!!! Вы реально хотите идентификаторы уникальные в контексте всей базы?! Это же нонсенс!

Колонки ссылающиеся на другую таблицу должны:
а) в названии отражать на какую таблицу идёт ссылка;
б) содержать ограничение FOREIGN KEY в котором прописаны таблица и название колонки, куда идёт ссылка. Это ограничение проверяется самой СУБД и нарушено быть не может;

ID записи должно быть уникальным только в рамках одной таблицы. GUID'ы имеют смысл как вспомогательные ключи, для идентичности между разными системами (в случае импорта-экспорта), но не для уникальности записей разных таблиц внутри всей базы. Это совершенно бесмысленно.

Вот и источник этой жести с GUID'ами)

У меня на работе 600+ таблиц и везде INT в виде внешнего ключа. И я до сих пор не запутался)
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 10:33  [ТС] 30
Цитата Сообщение от Usaga Посмотреть сообщение
Вот и источник этой жести с GUID'ами)
Да Бог с этими ГУИДами. Их на финальной стадии можно без проблем заменить на int.
Сейчас мне гораздо важнее понять - почему не работает запрос. )

Profiler
Код
exec sp_executesql N'SELECT [t].[Id], [t].[NAME], [s0].[Id], [s0].[NAME], [s0].[SprOrgId], [s0].[SprStatusProgId]
FROM (
    SELECT TOP(1) [s].[Id], [s].[NAME]
    FROM [SprOrg] AS [s]
    WHERE ([s].[Id] = @__id_0) AND @__id_0 IS NOT NULL
) AS [t]
LEFT JOIN [SprProg] AS [s0] ON [t].[Id] = [s0].[SprOrgId]
ORDER BY [t].[Id], [s0].[Id]',N'@__id_0 uniqueidentifier',@__id_0='DB28CDF9-870F-EA11-9C1D-04D4C46926FF'
Код
InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'WebKSP.Models.SprOrg', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable`1[WebKSP.Models.SprOrg]'.
Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(object value)
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
27.11.2019, 11:00 31
Цитата Сообщение от Usaga Посмотреть сообщение
ID записи должно быть уникальным только в рамках одной таблицы. GUID'ы имеют смысл как вспомогательные ключи, для идентичности между разными системами (в случае импорта-экспорта), но не для уникальности записей разных таблиц внутри всей базы. Это совершенно бесмысленно.
Вот и источник этой жести с GUID'ами)

Может быть, но я какбы с гуайдами косяков тоже не видел. Да и литературке мелкомягких в best practicals ничего не сказано насчет того, что лучше применять, но примеры пишуть с гуайдами

Добавлено через 2 минуты
Цитата Сообщение от defond57 Посмотреть сообщение
Да Бог с этими ГУИДами. Их на финальной стадии можно без проблем заменить на int.
Сейчас мне гораздо важнее понять - почему не работает запрос. )
потому что в линке не надо приводить гуайды к другому типу для поиска совпадений. Если гуайд другой, и не тот что надо - проблема не в запросе, а в его параметрах. И ловится это все хорошо на дебаге )

Добавлено через 2 минуты
Цитата Сообщение от Usaga Посмотреть сообщение
Вы реально хотите идентификаторы уникальные в контексте всей базы?! Это же нонсенс!
Не, не нонсенс. Может быть такая ситуация, что поищем в этой таблице, если не найдем, то в другой точно найдем. Ситуации такие есть, и тут только гуайды
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 11:06  [ТС] 32
Разобрался.

C#
1
2
3
SprOrg sprOrg = _context.SprOrg.Include(t => t.SprProgs).FirstOrDefault(t => t.Id == id);
// заменил на 
var sprOrg = _context.SprOrg.Include(t => t.SprProgs).FirstOrDefault(t => t.Id == id);
и всё заработало. С какого перепуга я поставил в начале не var - не знаю. Бес попутал.

Спасибо огромное за помощь.

Добавлено через 3 минуты
Цитата Сообщение от yurickas Посмотреть сообщение
потому что в линке не надо приводить гуайды к другому типу для поиска совпадений. Если гуайд другой, и не тот что надо - проблема не в запросе, а в его параметрах. И ловится это все хорошо на дебаге )
Да в том и дело - приводить начинаю от безысходности, когда вообще не понимаю, что происходит. А тут проблема оказалась в банальной невнимательности. Нафига я SprOrg вместо var всобачил до сих пор не пойму. Причем один раз написал как надо - var и там все работало. В Edit зачем то поставил SprOrg. И не мог понять, почему в одном месте все работает, а в другом ошибка сыпется. А глаз отличий не видит.

Рукажоп )

Добавлено через 1 минуту
Цитата Сообщение от yurickas Посмотреть сообщение
Может быть такая ситуация, что поищем в этой таблице, если не найдем, то в другой точно найдем. Ситуации такие есть, и тут только гуайды
Ну да - на стадии тестирования вообще штука классная. Если наговнокодил - сразу видно, что не оттуда данные тянуть начинаешь.
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
27.11.2019, 11:07 33
var тут ни при чем.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 11:11  [ТС] 34
Цитата Сообщение от yurickas Посмотреть сообщение
Ситуации такие есть, и тут только гуайды
Опять же, у меня 90% таблиц ссылаются друг на друга. Через пару часов начинает рябить от цифр. Сплошные цифры... Начинаешь скучать по буквам )

Добавлено через 52 секунды
Цитата Сообщение от yurickas Посмотреть сообщение
тут ни при чем.
Да? А в чем тогда ошибка, если после смены на var все заработало? Больше ведь ничего не менял.

Добавлено через 2 минуты
Цитата Сообщение от yurickas Посмотреть сообщение
Да и литературке мелкомягких в best practicals ничего не сказано насчет того, что лучше применять, но примеры пишуть с гуайдами
По ним и учусь
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
27.11.2019, 11:14 35
Цитата Сообщение от defond57 Посмотреть сообщение
приводить начинаю от безысходности, когда вообще не понимаю, что происходит.
Не надо приводить первичные ключи, а лучше понимать что происходит.

Цитата Сообщение от defond57 Посмотреть сообщение
Если наговнокодил - сразу видно, что не оттуда данные тянуть начинаешь.
нельзя тянуть данные "не оттуда" данные должны прийти или не прийти - все. Даже для тестирования, даже если наговнокодил. Пример того, что можно искать по одному Id в нескольких таблицах я привел не из стадии тестирования. Это когда у тебя в одной таблице должна быть ссылка на одну запись из нескольких однотипных таблиц.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 11:18  [ТС] 36
Цитата Сообщение от yurickas Посмотреть сообщение
Это когда у тебя в одной таблице должна быть ссылка на одну запись из нескольких однотипных таблиц.
До этого еще не дошел. На выходных начну учиться получать данные из нескольких таблиц.

Что-то посоветуете почитать?

Цитата Сообщение от yurickas Посмотреть сообщение
нельзя тянуть данные "не оттуда" данные должны прийти или не прийти - все.
Ну я пока умудряюсь запрашивать не те данные и не из тех таблиц.
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
27.11.2019, 11:18 37
Цитата Сообщение от defond57 Посмотреть сообщение
Да? А в чем тогда ошибка, если после смены на var все заработало? Больше ведь ничего не менял.
Вот сделай вот так вот и посмотри, совпадают типы данных который ты присваивал раньше и тот который реально ложится в var
Миниатюры
Ошибка при сложном запросе к БД (не найден столбец PROGRAMMId)  
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 11:23 38
Цитата Сообщение от yurickas Посмотреть сообщение
Может быть, но я какбы с гуайдами косяков тоже не видел. Да и литературке мелкомягких в best practicals ничего не сказано насчет того, что лучше применять, но примеры пишуть с гуайдами
Тут consern в чём: ТС задумал делать ключи уникальными на уровне всей базы. IDENTITY такое не позволяет, Sequence он не захотел \ не знал про это, и решил взять GUID, который псевдоуникальный. Т.е. GUID выбран не потому, что нравится, а именно из ошибоного стремления делать ID записей уникальными среди всех таблиц во всей базе. Вот это дико.

Цитата Сообщение от defond57 Посмотреть сообщение
Да Бог с этими ГУИДами. Их на финальной стадии можно без проблем заменить на int.
Сейчас мне гораздо важнее понять - почему не работает запрос. )
Запрос работает. Текст ошибки говорит, что вы в View передали объект класса SprOrg, когда в самой View прописано, что должна приходить коллекция.

Цитата Сообщение от yurickas Посмотреть сообщение
Не, не нонсенс. Может быть такая ситуация, что поищем в этой таблице, если не найдем, то в другой точно найдем. Ситуации такие есть, и тут только гуайды
Это нонсенс. Потому, что в другой таблице - другие сущности. Если вы ищите Person, то он должен лежать в одной таблице. А заводить идентичные таблицы - нонсенс не хуже уникальных ID на всю базу.

Цитата Сообщение от defond57 Посмотреть сообщение
и всё заработало. С какого перепуга я поставил в начале не var - не знаю. Бес попутал.
var тут никаким боком.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 114
27.11.2019, 11:34  [ТС] 39
Цитата Сообщение от Usaga Посмотреть сообщение
Т.е. GUID выбран не потому, что нравится, а именно из ошибоного стремления делать ID записей уникальными среди всех таблиц во всей базе.
Но у меня нет необходимости во всей БД делать уникальные Id. Нафига? Мне действительно тяжело работать с голыми цифрами. Я же пробовал в самом начале.

Цитата Сообщение от Usaga Посмотреть сообщение
Запрос работает. Текст ошибки говорит, что вы в View передали объект класса SprOrg, когда в самой View прописано, что должна приходить коллекция.
Цитата Сообщение от yurickas Посмотреть сообщение
Вот сделай вот так вот и посмотри, совпадают типы данных который ты присваивал раньше и тот который реально ложится в var
Проверю. Спасибо.
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
27.11.2019, 11:40 40
Цитата Сообщение от defond57 Посмотреть сообщение
Но у меня нет необходимости во всей БД делать уникальные Id. Нафига? Мне действительно тяжело работать с голыми цифрами. Я же пробовал в самом начале.
Вам не нужно знать эти цифры. От слова совсем. Что с чем связывается показывает название колонки и FOREIGN KEY CONSTRAINT.
0
27.11.2019, 11:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2019, 11:40
Помогаю со студенческими работами здесь

OleDbDataReader - вылетает ошибка, что такой столбец не найден, но имя такое есть
Пытаюсь обратиться к столбцу в запросе по имени - вылетает ошибка, что такой столбец не найден, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru