powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL недопонимание базовых механизмов
9 сообщений из 9, страница 1 из 1
LINQ to SQL недопонимание базовых механизмов
    #38117113
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, уважаемые форумчане.
У меня на лицо недостаток знаний базовых механизмов ORM, а может и базовых механизмов наследования.
Прошу разъяснить вот такую загвоздку.
Есть таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE [dbo].[TestTable]
(
	ID bigint IDENTITY(1,1) NOT NULL, 
	IDField bigint NOT NULL,
	Value int NOT NULL


,
 CONSTRAINT [PK_TestTable] 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]




Через LINQ to SQL для нее генериться класс
Код: c#
1.
TestTable



Также создаю свой класс

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 class TestTableExt : TestTable
        {
            public TestTableExt()
                : base()
            {
            }

            public long GetValue()
            {
                return Value;
            }
        }
        



Разумеется следующий код выполняется запросто

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
 GeneralDataContext GDC = new GeneralDataContext();


            TestTable TT = new TestTable();
            TT.IDField = 10;
            TT.Value = 5;

            GDC.TestTables.InsertOnSubmit(TT);
            GDC.SubmitChanges();



А вот этот код не выполняется

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
GeneralDataContext GDC = new GeneralDataContext();
            TestTableExt TTExt = new TestTableExt();

            TTExt.IDField = 10;
            TTExt.Value = 7;


            TestTable T = (TestTable)TTExt;

            GDC.TestTables.InsertOnSubmit(T);
            GDC.SubmitChanges();



Выдает исключение

Object reference not set to an instance of an object.

Почему???
Ведь объект то создан. Он реально существует и ошибка вываливается только при вызове GDC.TestTables.InsertOnSubmit(T);
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38121212
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые форумчане, может есть какие мысли по этому поводу. Почему такое происходит. Буду рад любым мыслям.
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38121278
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо это особенности LINQ2SQL. Тут лучше инкапсуляцией.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        class TestTableExt
        {
            public TestTable Base { get; set; }

            public long GetValue()
            {
                return Base.Value;
            }
        }
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38121294
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homosum,

Это исключение вылезло, вероятно, из преисподни, вы не привели StackTrace. Как работает LINQ2SQL я не знаю, но в EF тоже ты не сохранишь экземпляр public class MyClass : MyEntity { }, только Entity, это внутренняя реализация и ее надо принимать, как есть. Предположу, что это связано как минимум с автоматической генерацией proxy для Entity, а она наследуется от самой Entity, поскольку ORM знает только о твоей Entity. Потому при сохранении экземпляра MyClass : MyEntity вместо экземпляра MyEntity вылетает исключение.
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38121305
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще, где-то читал, что linq2sql держат для совместимости. переходить надо на ef.
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38122998
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К, спасибо. В принципе так и реализовал + применил методы расширения (там где получалось).
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38123004
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British, спасибо!

В принципе так и думал, что это внутренняя фишка LINQTOSQL. Просто маячила мысль, а вдруг это все таки мои пробелы в базовых знаниях.
Насчте того, что надо переходить на EF согласен. Тоже читал, что в будущем LINQTOSQL перестанет поддерживаться. Да только вот у текущего проекта много кода уже на нем написано и сложно сейчас переделывать. Буду ждать глубокого рефакторинга и уже там перепишу.
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38125471
QrystaL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HomosumБуду ждать глубокого рефакторинга и уже там перепишу.
Зачем?
...
Рейтинг: 0 / 0
LINQ to SQL недопонимание базовых механизмов
    #38128140
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QrystaLHomosumБуду ждать глубокого рефакторинга и уже там перепишу.
Зачем?


По причине того, что данная технология в будущем не будет развиваться (или у меня неверные новости?)

Если этим проектом будут заниматься новые молодые разработчики, которые не видели LINQ2SQL, то их обучение тоже встанет в копеечку.
Да и Entity если будет развиваться будет давать больше возможностей.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ to SQL недопонимание базовых механизмов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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