powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq-to-Sql проблема преобразования типов
7 сообщений из 7, страница 1 из 1
Linq-to-Sql проблема преобразования типов
    #36242270
_Varcom_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Выполняю простейший join по вторичному ключу в стиле:

Код: plaintext
var res = from insA in instancesA where insA.FId == instancesB.Id select insA.Data;

Поля FId и Id прописаны в базе как numeric(19,0). Я же использую для них CLR тип decimal:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
//[ID] [numeric](19, 0) IDENTITY(1,1) NOT NULL,
        private decimal _id;

        [Column(Name = "ID", Storage="_id", IsDbGenerated = true, IsPrimaryKey = true)]
        public decimal Id
        {
            get { return _id; }
            set { _id = value; }
        }

При выполенении запроса выскакивает ошибка "не могу преобразовать insA.FId в SQL"
Хотя по логике вещей должно прокатывать: http://msdn.microsoft.com/ru-ru/library/bb386947.aspx

Как выйти из положения?
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36242643
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Varcom_,

что такое instancesA и instancesB? пример неполон.
и почему бы не воспользоватьс готовым маппингом по FK?
например,
Код: plaintext
var res = db.Table.InstanceB.InstancesA.Select(p=>p.Data);
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36242650
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наврал немного с примером,

Код: plaintext
var res = instanceB.InstancesA.Select(p=>p.Data);
при учете что instanceB уже найден.
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36244411
_Varcom_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, если не точно выразился.
instancesB - это главный объект, экземпляр которого у меня есть.
Табличка instancesA хранит связи объектов типа instancesB с различными данными.
Поэтому нужно для данного instancesB.Id вытащить все относящиеся к нему наборы данных из instancesA.
instancesA.Fid - это и есть вторичный ключ, указывающий на головной объект.

Поэтому маппингом по FK пользовать не могу, ибо нужно обратное преобразование - по имеющемуся первичному ключю найти все ссылающиеся на него вторичные.
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36244433
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда что такое в твоем коде "instancesA" ? выкладывай достаточные примеры, не заставляй людей лишний раз думать и писать вопросы.
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36244448
_Varcom_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Более подробно.

Код: plaintext
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.
InstanceBType InstanceB;
DataContext db = new DataContext(LocalConfiguration.ConnectionString);
Table<InstanceAType> instancesA = db.GetTable<InstanceAType>();
var result = from insA in  instancesA where (InstanceB.Id == insA.FId) select insA.Data;
...
return result.ToList();



    [Table(Name = "...")]
    public class InstanceBType
    {

        //[ID] [numeric](19, 0) IDENTITY(1,1) NOT NULL,        
        private decimal _id;

        [Column(Name = "ID", Storage = "_id", DbType = "numeric(19,0)", IsPrimaryKey = true, IsDbGenerated = true, CanBeNull=false)]
        public decimal  Id
        {
            get { return _id; }
            set { _id = value; }
        }
        ...
   }

    public class InstanceAType
    {
           //[F_ID] [numeric](19, 0) NULL,
        private decimal _fId;

        [Column(Name = "F_ID", Storage = "_fId")]
        public decimal FId
        {
            get { return _fId; }
            set { _fId = value; }
        }

        private EntityRef< InstanceBType> _f;

        [Association(Name = "F_ID", IsForeignKey = true, ThisKey = "FId", Storage = "_f")]
        public InstanceBType Data
        {
            get { return _f.Entity; }
            set { _f.Entity = value; }
        }
        ...
   }
...
Рейтинг: 0 / 0
Linq-to-Sql проблема преобразования типов
    #36244555
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, чувствую через сообщение мне надоест сюда писать

Код: plaintext
1.
2.
3.
InstanceBType InstanceB;
DataContext db = new DataContext(LocalConfiguration.ConnectionString);
Table<InstanceAType> instancesA = db.GetTable<InstanceAType>();
var result = from insA in  instancesA where (InstanceB.Id == insA.FId) select insA.Data;
если это реальные 4 строчки именно в такой последовательности и ничего больше, то.... как ты используешь в запросе неинициализированный InstanceB?

да и маппинг у тебя кривой какой-то, ты его руками что-ли наклепал? почему было не воспользоваться дизайнером? вместе с кривым маппингом сам по себе запрос вообще выглядит крайне бредово.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq-to-Sql проблема преобразования типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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