1

Я пытаюсь «Entitify» некоторую внешнюю таблицу (которую я не администрирую), чтобы использовать ее в приложении MVC, и в принципе я не ужасно успешна с попыткой (выход VS2008):Должен ли я иметь ПК в исходной таблице для создания модели данных сущностей ADO.NET?

Список ошибок [0 Ошибки] [0 Warnings] [1 сообщение]

Описание

The table/view 'DATABASE.dbo.table' 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. 

Файл

C:\Documents and Settings\%USERNAME%\My Documents\Visual Studio 2008\Projects\MVC_Entity_Test\MVC_Entity_Test\Models\EmployeesDataModel.edmx 

Line

0 

Колонка

1 

Проект

MVC_Entity_Test 

Выход

Показать выход из: Entity Data Model

Added the connection string to Web.Config. 
Successfully registered the assembly 'System.Data.Entity, Version=3.5.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089' in Web.Config. 
The model was generated with warnings or errors. 
Please see the Error List for more details. These issues must be fixed before 
running your application. 
Loading metadata from database took 00:00:06.2809306. 
Generating model took 00:00:03.0359078. 
Writing out the EDMX file took 00:00:00.0230083. 
Added the connection string to Web.Config. 
Successfully registered the assembly 'System.Data.Entity, Version=3.5.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089' in Web.Config. 
The model was generated with warnings or errors. 
Please see the Error List for more details. These issues must be fixed before running 
your application. 
Loading metadata from database took 00:00:12.3208290. 
Generating model took 00:00:03.6914563. 
Writing out the EDMX file took 00:00:02.1670689. 

Так что мой вопрос будет, это абсолютно обязательно объявить ПК на столе источник правильно отобразить его как ASP.NET Entity?

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

ответ

6

Платформа Entity Framework является основой отображения, поэтому нужен способ однозначно сопоставить каждую строку в объект. Для этого требуется некоторая форма уникального идентификатора, который используется для генерации операторов SQL DML, поэтому строка может быть изменена.

В вашей ситуации, если существует комбинация столбцов, не содержит NULL, которые однозначно идентифицируют строку, вы можете вручную добавить необходимую информацию в файл edmx. На этой странице MSDN будут описаны основы ручного добавления объекта в edmx, http://msdn.microsoft.com/en-us/library/bb399785.aspx. Помните, что это просто файл XML, который вы можете редактировать.

+0

Лэнс, спасибо большое за сообщение! Я проверял документы, и я должен сказать, что теперь я более уверен в EF, я буду пытаться редактировать эти XML вручную. –

+0

Посмотрите на инструмент edmgen.exe, когда делаете это руками. Я работал с ним немного, но его можно использовать для проверки XML-файлов, которые могут сэкономить вам некоторые головные боли. – LanceSc

0

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

В конце концов, только с первичным ключом можете ли вы однозначно идентифицировать и хранить отдельные строки в таблице (и, следовательно, объекты или экземпляры объектов в вашей модели домена).

Один гуру SQL даже сказал: Если у него нет первичного ключа, это не таблица! :-)

Marc

+0

Марк, спасибо за комментарий, но, как я объяснил в ** Примечание ** У меня нет никакого контроля над этим источником данных, но все же я бы хотел полагаться на Entity, чтобы манипулировать им. –

Смежные вопросы