powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF edmx без праймери кей
25 сообщений из 46, страница 1 из 2
EF edmx без праймери кей
    #36553734
Фотография lans
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно загрузить в edmx таблицу у которой нет праймери кей. а то пишет вот что
<!--Errors Found During Generation:
warning 6013: The table/view 'ALTNAMES' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity you will need to review your schema, add the correct keys and uncomment it.

<EntityType Name="ALTNAMES">
<Property Name="OLDCODE" Type="nvarchar" MaxLength="255" />
<Property Name="NEWCODE" Type="nvarchar" MaxLength="255" />
<Property Name="LEVEL" Type="nvarchar" MaxLength="255" />
</EntityType>-->
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36558680
SculptoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правильно пишет. таблица без праймари ключа не правильна. и в его понимании и в идеологии реляционных бд. зачем она должна быть без пк? пк может быть родным - редко видел, может быть синтетическим. но зачем же совсем без него?
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36558692
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможный извращённый вариант - добавьте PK-поле в схему руками и выставьте StoreGeneratedPattern="Computed" у него.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36559686
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SculptoRправильно пишет. таблица без праймари ключа не правильна. и в его понимании и в идеологии реляционных бд. зачем она должна быть без пк? пк может быть родным - редко видел, может быть синтетическим. но зачем же совсем без него?

В иделогии ER нигде не сказано, что PK обязателен. Более того, он даже вреден в плане производительности для таблиц с небольшим объемом данных. Не нужно под убогость ORM, подводить какую-то теоретическую базу.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36559833
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SilverlightSculptoRправильно пишет. таблица без праймари ключа не правильна. и в его понимании и в идеологии реляционных бд. зачем она должна быть без пк? пк может быть родным - редко видел, может быть синтетическим. но зачем же совсем без него?

В иделогии ER нигде не сказано, что PK обязателен. Более того, он даже вреден в плане производительности для таблиц с небольшим объемом данных. Не нужно под убогость ORM, подводить какую-то теоретическую базу.
В добрый путь... всем знатокам теоретической базы :) Вызывает интерес, каким образом будут разруливаться UD операции при отсутствии уникального индекса? Хотя... стоит признать, ну не то чтоб убогость... зело умен EF, что порою бесит... и, казалось бы, вполне безобидные вещи невозможно сделать из-за "недюжего интеллекта" этой ORM, например - описанный случай и ряд других... Ну не @е дело провидцев от микрософт закрывать часть возможностей из-за возможности каких-то потенциальных коллизий при сохраненении... чай не лохи на кнопки давят мыж все понимем, ну просто нам так надо... мы все сами разрулим :) А Вы наверное на хибер намекаете?
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36559894
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уникальность можно поддерживать и без индексов. Я на все ОRM намекаю. Все они из одной бочки.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36565023
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева, твою любимую книгу на русском издали:
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #36565116
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я их в английском варианте уже давно читал. Быстрее всего - это уже мукулатура. Вчера выложен Preview 4.0 c существенными изменениями.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
EF edmx без праймери кей
    #39689818
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lans,
Не прошло и восьми лет с момента первоначального обсуждения :)
А воз и ныне там.
У меня с таблицами проблем нет - все честно имеют PK.
Но как быть с представлениями? MS SQL Server, насколько я понимаю, не позволяет объявлять ПК в представлениях.
Попытка обновить схему из БД неизменно приводит к следующему (исключению представления из модели):
Код: html
1.
2.
warning 6013: The table/view 'dbo.V_XXX' does not have a primary key defined and no valid primary key could be inferred. 
This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39689837
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

Нужно говорить про версию используемого EF.
EF это entity framework.

А не views framework ))
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39689839
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКурдль,

Нужно говорить про версию используемого EF.
EF это entity framework.

А не views framework ))
Версия 6.2.0
entity - это "сущность" и что?
Почему нельзя дать разработчику возможность указать ПК постфактум?
Точнее возможность такая есть - ручное вмешательство в edmx, после чего он больше не сможет автоматически апдэйтиться из БД
Ладно, я упаковал запрос в процедурину, потерял возможность видеть представление на схеме и выстраивать взаимосвязи с таблицами и т.п.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39689857
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдльentity - это "сущность" и что?

То, что EF это фреймворк для работы с сущностями БД.
А сущность характеризуется наличием идентификатора (уникальный ключ).


КурдльПочему нельзя дать разработчику возможность указать ПК постфактум?

Без проблем, указывайте.


КурдльТочнее возможность такая есть - ручное вмешательство в edmx, после чего он больше не сможет автоматически апдэйтиться из БД

Потому что апдейт edmx из БД подходит только для проектов примитивного уровня или лабораторных работ. Просто в силу ограниченности возможностей, это работает только когда вас полностью устраивает генерация.


КурдльЛадно, я упаковал запрос в процедурину, потерял возможность видеть представление на схеме и выстраивать взаимосвязи с таблицами и т.п.

Многие люди реально теряются при ответе на вопрос: вам шашечки, или ехать?
И в итоге рождаются какие-нибудь костыли.
И виноват какой-нибудь фреймворк :))
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39689904
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Вы во многом правы. Это, конечно же, моя проблема, что мне не нравится некоторый функционал EF.
На мой взгляд не должно быть наполовину беременных решений. Либо DB First, Code First.
Если я выбрал первое - не должен копаться в кишках кода каждый раз, как меняю модель данных.

Так что Вы предлагаете? Оставить представление и дальше edmx править только вручную?
А может быть создать индексированное представление?
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39689945
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
Не понял проблему.
Выше он верно написал, что сущность это таблица.
Зачем вам вьюха?
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690007
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Вот чего Вы все надо мною прикалываетесь?
Сущность - это элемент логической модели. Таблица - элемент физической реализации.
Зачем тогда всё многообразие объектов БД? Зачем вьюхи, процедуры, функции, массивы и коллекции?..
Мне для работы нужны не таблицы или сущности и т.п. Мне нужны НАБОРЫ ДАННЫХ.
В частном случае - результат рекурсивного запроса CTE. EF умеет строить рекурсивные запросы непосредственно к таблицам?
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690014
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльВот чего Вы все надо мною прикалываетесь?
совсем нет.
КурдльСущность - это элемент логической модели. Таблица - элемент физической реализации.
Да. Тут противоречие сразу появляется, т.к. моделирование это приближение к реальности.
Объектые сущности надо сохранять где объектов и наследования нету - РСУБД.
КурдльМне для работы нужны не таблицы или сущности и т.п. Мне нужны НАБОРЫ ДАННЫХ.
Значит если не нужны классы и коллекции, то ОРМ и EF не нужен. Нужно как в дельфи - датасет.
КурдльEF умеет строить рекурсивные запросы непосредственно к таблицам?
Зачем? Если вам ОРМ не нужен.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690015
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
У меня есть проект где нет ОРМ и нормально работает.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690049
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльЕсли я выбрал первое - не должен копаться в кишках кода каждый раз, как меняю модель данных.

Вообще-то DB First по сути, это когда у вас есть уже готовая БД и вам нужно для неё быстро сделать работающую систему.

Но некоторые люди по незнанию выбирают такой подход в длительной разработке, и это big mistake.
Комплекс изменений, который вы сделаете в БД очень легко может стать unresolvable , так как EF не обладает искусственным интеллектом, чтобы понять, что на самом деле произошло и как это сопоставить с моделью.

Есть лишь два единственных адекватных способа вести длительную разработку ПО и модели данных с использованием EF: Model First и Code First.

КурдльТак что Вы предлагаете? Оставить представление и дальше edmx править только вручную?

Предлагаю перейти на Model First или Code First. Если это не подходит в силу привычек (очень сильно хочется DDL, до коликах в животе), тогда вам нужен другой ORM и полностью ручное сопровождение. Например, Dapper или LiteDb.

КурдльА может быть создать индексированное представление?

Индексация тут не при чём.

КурдльМне для работы нужны не таблицы или сущности и т.п. Мне нужны НАБОРЫ ДАННЫХ.

Ну и как EF, который работает с сущностями должен определять ваши «наборы данных», как их сопровождать и как с ними работать, как отслеживать изменения и как работать с кешем? Ответ -- никак.

КурдльВ частном случае - результат рекурсивного запроса CTE. EF умеет строить рекурсивные запросы непосредственно к таблицам?

В Code First это делается, например, путём определения класса-сущности для вьюхи и ручной миграцией с SQL. По крайне мере это работает в любых условиях и поведение ожидаемое. :)
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690093
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВообще-то DB First по сути, это когда у вас есть уже готовая БД и вам нужно для неё быстро сделать работающую систему.

Но некоторые люди по незнанию выбирают такой подход в длительной разработке, и это big mistake.
Комплекс изменений, который вы сделаете в БД очень легко может стать unresolvable нет.
Это делают когда БД есть и ее масштаб - предприятие. Генериррвать не дадут.
Но у нас же не про рассогласование вопрос.
А о вьюхах и зачем они в ОРМ.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690108
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Это делают когда БД есть и ее масштаб - предприятие. Генериррвать не дадут.

Чего это ты мне рассказываешь :)
У нас проекты масштабов предприятия федерального уровня,
ни в одном из них нет БД, которую пилит своими руками в DDL какой-то кадр
всё управляется ПО, никто вообще не имеет никаких прав лезть в БД руками,
только на чтение

и это прекрасно :)
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690109
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123А о вьюхах и зачем они в ОРМ.

CTE ты без вьюхи в EF не сделаешь, увы
не считая custom sql, но это уже за гранью
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690149
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Ну и у нас федерального.
Только я не говорю что у нас лучше других)).
У вас проекты другие.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690151
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123А о вьюхах и зачем они в ОРМ.

CTE ты без вьюхи в EF не сделаешь, увы
не считая custom sql, но это уже за гранью
А зачем это делать?
И как ты с ОРМ поменяешь базу при этом?
Ведь одна из основных фич ОРМ это смена базы.
Т.е. довод про CTE от лукавого.
Это не нужно что при dbfirst, что при codefirst.
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690152
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ведь одна из основных фич ОРМ это смена базы.
Т.е. довод про CTE от лукавого.

Ну как, поправить зависимый код. Ничего идеального не существует )
...
Рейтинг: 0 / 0
EF edmx без праймери кей
    #39690153
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttCTE ты без вьюхи в EFесли пойти дальше то это и в хибере не сделать и в java не сделать.
Поэтому тему какую то странную подняли)).
DbFirst или CodeFirst тут ворбще ни при чем.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF edmx без праймери кей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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