Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF edmx без праймери кей / 25 сообщений из 46, страница 1 из 2
31.03.2010, 18:08
    #36553734
lans
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Как можно загрузить в 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
02.04.2010, 19:22
    #36558680
SculptoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
правильно пишет. таблица без праймари ключа не правильна. и в его понимании и в идеологии реляционных бд. зачем она должна быть без пк? пк может быть родным - редко видел, может быть синтетическим. но зачем же совсем без него?
...
Рейтинг: 0 / 0
02.04.2010, 19:30
    #36558692
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Возможный извращённый вариант - добавьте PK-поле в схему руками и выставьте StoreGeneratedPattern="Computed" у него.
...
Рейтинг: 0 / 0
04.04.2010, 11:50
    #36559686
Silverlight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
SculptoRправильно пишет. таблица без праймари ключа не правильна. и в его понимании и в идеологии реляционных бд. зачем она должна быть без пк? пк может быть родным - редко видел, может быть синтетическим. но зачем же совсем без него?

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

В иделогии ER нигде не сказано, что PK обязателен. Более того, он даже вреден в плане производительности для таблиц с небольшим объемом данных. Не нужно под убогость ORM, подводить какую-то теоретическую базу.
В добрый путь... всем знатокам теоретической базы :) Вызывает интерес, каким образом будут разруливаться UD операции при отсутствии уникального индекса? Хотя... стоит признать, ну не то чтоб убогость... зело умен EF, что порою бесит... и, казалось бы, вполне безобидные вещи невозможно сделать из-за "недюжего интеллекта" этой ORM, например - описанный случай и ряд других... Ну не @е дело провидцев от микрософт закрывать часть возможностей из-за возможности каких-то потенциальных коллизий при сохраненении... чай не лохи на кнопки давят мыж все понимем, ну просто нам так надо... мы все сами разрулим :) А Вы наверное на хибер намекаете?
...
Рейтинг: 0 / 0
04.04.2010, 16:55
    #36559894
Silverlight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Уникальность можно поддерживать и без индексов. Я на все ОRM намекаю. Все они из одной бочки.
...
Рейтинг: 0 / 0
07.04.2010, 10:34
    #36565023
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Сева, твою любимую книгу на русском издали:
...
Рейтинг: 0 / 0
07.04.2010, 11:01
    #36565116
Silverlight
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Я их в английском варианте уже давно читал. Быстрее всего - это уже мукулатура. Вчера выложен Preview 4.0 c существенными изменениями.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
18.08.2018, 18:28
    #39689818
Курдль
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
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
18.08.2018, 21:03
    #39689837
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
Курдль,

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

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

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

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

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


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

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


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

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


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

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

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

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

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

Вообще-то 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
19.08.2018, 21:18
    #39690093
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF edmx без праймери кей
hVosttВообще-то DB First по сути, это когда у вас есть уже готовая БД и вам нужно для неё быстро сделать работающую систему.

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

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

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

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

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

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


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