Idąc tradycją MS, pozbyłem się numeru 13 i z miejsca przeskoczyłem na Tips & Tricks o numerze 14 :)

W najnowszym projekcie stwierdziliśmy, że będziemy wykorzystywać Entity Framework. Nie pytajcie dlaczego, po prostu istnieje, nie jest open-source i jako tako działa. Czy za tydzień będziemy z niego korzystać to wyjdzie w praniu ;) ale do póki korzystamy to jestem wstanie napisać kilka porad ;)

Podczas zabawy z aktualizowaniem modelu na podstawie bazy danych, która ciągle ulega modyfikacji natrafiłem na następujący błąd:

Error 3007: Problem in Mapping Fragments starting at lines X, Y: Non-Primary-Key column(s) [COLUMN_NAME] are being mapped in both fragments to different conceptual side properties – data inconsistency is possible because the corresponding conceptual side properties can be independently modified.

W netcie jest trochę na ten temat, jednak ku pamięci :) jak się coś napisze to się o tym nie zapomni – podobno ;) Problem polegał na tym iż aktualizowałem model który nie posiadał relacji zaś posiadał nazwy kolumn, które odwoływały się do elementu w innej tabeli. Tak zwany relacyjny model bez relacji ;)

Podczas pierwszej generacji Entity w projekcie kolumna, która odwoływała się do innej tabeli została zaciągnięta i utworzona jako Property danego Entity (dokładnie mówiąc Property z Entityzostało z mapowane na kolumnę w bazie). Wszystko było dobrze, do póki w bazie danych nie potworzyliśmy relacji. Entity działa mianowicie tak, że każdą relację zamienia na Navigation Property, który tak naprawdę jest asocjacją pomiędzy dwoma Entity. Teraz moja kolumnaCOLUMN_NAME była z mapowana zarówno na Property w Entity jak i Property w asocjacji.

Rozwiązaniem więc błędu było – i wciąż jest ;) – usunięcie Property COLUMN_NAME z Entity i pozostawienie jej jako asocjacji – w końcu asocjacja nas interesuje prawda? :)