воскресенье, 25 июля 2010 г.

Unable to update the EntitySet because it has a DefiningQuery and no element exists in the element to s

When working with ADO.NET Entity Data Model, its often common that we generate entity schema for more than a single table from our Database. With Entity Model generation automated by Visual Studio, it becomes even more tempting to create and work with entity models to achieve an object mapping relationship.

One of the errors that you might hit while trying to update an entity set either programmatically using context.SaveChanges or while using the automatic insert/update code generated by GridView etc., is “Unable to update the EntitySet because it has a DefiningQuery and no element exists in the element to support the current operation”

While the description is pretty lengthy, the immediate thing that would come to our mind is to open our the entity model generated code and see if you can update it accordingly.

However, the first thing to check is that, if the Entity Set is generated from a table, whether the table has a primary key definition. Most of the times, we create tables with primary keys. But some reference tables and tables which don’t have a primary key cannot be updated using the context of Entity and hence it would throw this error. Unless it is a View, in which case, the default model is read-only, most of the times the above error occurs since there is no primary key defined in the table.

Once you add a primary key constraint to the table in the database design, there are couple of steps to do until you can resolve the issue

1. Open the EDMX file in the design mode

2. Right click on the design view and select "Modal Browser"

3. The Modal Browser window opens on the right hand side

4. Select the .Store and right click

5. Select "Update Model from Database"

6. It will give you different options to add Tables, Delete Tables and a Refresh tab which mentions a list of database types that would be refreshed

7. If you are just getting the updated model after adding the primary key constraint as in our example, you can directly click "Finish"

8. At this point, we would expect everything should work fine since the primary key constraint is added and the build should be fine to go through

9. But if you build the solution/project you would receive a "3002 Error" describing that the storage models and conceptual models are not compatible.

10. You need to manually open the Model1.edmx again. Right click on the Model1.edmx and select "Open with"

11. Then select "XML (Text) Editor"

12. It will ask you confirmation to close the existing open model. Confirm by pressing "Yes"

13. This would present you an XML view of the model (I dont know a better way of directly coming to this view, if any post, in comments)

14. Find the section

15. Under that go the EntityTypes section with the name of the table which you updated with primary key

16. You will find that under the collection, additional columns defined as PropertyRef

17. You need to the remove the additional columns and just have the Primray key column within the section

18. This is updated in the StorageModel section automatically but not in the conceptualmodel as of today.

19. Once you make this change and save, you should be able to build the project successfuly and also be able to update it programmatically by code

20. As I write this, I am also raising it in Microsoft Connect as to why the "update model" doesn't do a clean job of updating the schema. Would post clarifications any, if I receive.

There are other reasons why this error could popup which I am not going into for the sake of simplicity of the post. If you find something new, please feel free to share it in comments.

Hope this helps.

понедельник, 19 июля 2010 г.

Я и WiFi

суббота, 10 июля 2010 г.

Инструктаж перед началом



Фотокорреспондент: Николай Серов
Ретушь: Илья Яковлев

понедельник, 28 июня 2010 г.

Свершилось, обновление HTC Hero

Стартовало обновление FOTA-клиента на HTC Hero. Переведите дату телефона на месяц вперед и перезагрузите телефон для получения!

Лучше для этого иметь WiFi под руками.

понедельник, 21 июня 2010 г.

Без комментариев




Надеюсь, что фейк. Но что-то мало в это верится...

К слову:

Статья 21


1. Достоинство личности охраняется государством. Ничто не может быть основанием для его умаления.

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

Статья 22

1. Каждый имеет право на свободу и личную неприкосновенность.

2. Арест, заключение под стражу и содержание под стражей допускаются только по судебному решению. До судебного решения лицо не может быть подвергнуто задержанию на срок более 48 часов.

Статья 23

1. Каждый имеет право на неприкосновенность частной жизни, личную и семейную тайну, защиту своей чести и доброго имени.

2. Каждый имеет право на тайну переписки, телефонных переговоров, почтовых, телеграфных и иных сообщений. Ограничение этого права допускается только на основании судебного решения.

Статья 25

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

Статья 27

1. Каждый, кто законно находится на территории Российской Федерации, имеет право свободно передвигаться, выбирать место пребывания и жительства.

2. Каждый может свободно выезжать за пределы Российской Федерации. Гражданин Российской Федерации имеет право беспрепятственно возвращаться в Российскую Федерацию.

пятница, 18 июня 2010 г.

Windows 7 файл hosts

Итак, как же сделать файл hosts для Windows XP x64 или Vista 64? (в 32-битных системах такой проблемы не возникает).
После получаса плясок с бубном ответ был найден.


В Windows XP 32 (а также насколько я помню в Windows 2000) файл hosts хранится в
C:\WINDOWS\system32\drivers\etc\, вместе со следующими файлами:
hosts
lmhosts.sam
networks
protocol
services


У меня дома установлена Windows XP x64 Edition, а в ней такого пути нет. То есть, C:\WINDOWS\system32\drivers\ есть, но в ней нет папки etc\ и соответственно в ней нет файла hosts.

В итоге, я плюнул и с горя создал папку etc\ ручками. Дай, думаю, сам напишу этот злосчастный файл hosts, вдруг винда обладает генетической памятью и прохавает такой финт.

И вот она - уличная магия: как только я создал папку etc, в ней автоматически, без участия с моей стороны, были созданы файлы приведенные в списке! Причем файлы корректные, заполненные правильной информацией.


Итак, алгоритм создания файла hosts для Windows XP/Vista 64 bit такой:

1. Идем в папку C:\WINDOWS\system32\drivers\
2. Ручками создаем папку etc\
3. В папке etc\ без вашего участия (автоматически) появляется файл hosts

оригинал

четверг, 13 мая 2010 г.

Последнее (?) выступление Сирийского оркестра