Robię prosty program do katalogowania domowych książek w oparciu o SQL Server i Entity Framework 4 (w ramach nauki tych technologii) i natknąłem się na problem.
Otóż, mam zaledwie dwie tabele: Author i Book, połączone relacją one-to-many, stąd w tabeli Book, znajduje się między innymi AuthorID - klucz obcy wskazujący na tabelę Author.
W czym problem?
Otóż, kiedy próbuję wstawić nowy obiekt do tabeli Author, nie ma problemu, daję cos takiego:
Author newauthor = new Author();
newauthor.Firstname = "Fiodor";
newauthor.Lastname = "Dostojewski";
entities.Authors.AddObject(newauthor);
I to działa. Ale jesli chcę wstawić nową książkę, to nie mam zielonego pojęcia jak rozwiązać problem autora. Tabela Book ma to AuthorID ale żeby to wstawić muszę pamiętać jaki autor ma jakie ID.
Wpadłem też na co takiego:
Book newbook = new Book();
newbook.Title = "Bracia Karamazow";
//...
newbook.AuthorID = (from aut in entities.Authors where aut.Lastname == "Dostojewski" select
aut.AuthorID).First(); //nie da się jakos sensowniej???
entities.Books.AddObject(newbook);
entities.SaveChanges();
O ten skomentowany wers mi chodzi. Na bank robię cos pod górę i bez sensu ale nie wiem co, bo jestem zielony jak szczypiorek na wiosnę w tym temacie. Sam zresztą widzę, że z Dostojewskim pół biedy, gorzej jak kilku autorów będzie miało te same dane osobowe.
Pewnie dobre GUI ułatwiło by sprawę ale nie chcę kombinować z interfejsem, póki co robię to w konsoli.
Podpowiecie cos?