#programowanie #csharp #aspnet #dotnet #entityframework
.NET 4.6 MVC

Mam problem ze zrozumieniem i załapaniem dobrej praktyki przy używaniu entity frameworka w dosyć podstawowej sytuacji. Mam dwa modele, Project i Note. Chciałbym, aby były one ze sobą w relacji jeden do wielu. Zastanawiam się jak to zrobić, żeby wycisnąć jak najwięcej z EF i nie pisać zbędnego kodu.

Tutaj definicje modeli: http://pastebin.com/Q05RfpgQ
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Viters: To jest jak najbardziej poprawna praktyka. EF wykrywa, że Twoja właściwość ProjectId jest obcym kluczem. Jeżeli jest ona nullable to relacja jest opcjonalna. Jeżeli nie jest nullable to relacja jest wymagana i przy usuwaniu stosowane jest usuwanie kaskadowe. Wszystko ofc można nadpisać, ale taka jest konwencja. Masz linka jak coś: Akapit: Relationship Convention
  • Odpowiedz
Mirki jak projektujecie bazę danych w Entity Framework + MS SQL Server?

Chciałbym uzyskać w rzeczy:
- zaprojektować bazę za pomocą diagramu
- wykorzystując diagram wygenerować klasy w podejściu code first

Jak
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PanCogito: Strasznie przekombinowane. Na twoim miejscu pozbyłbym się tych wszystkich attachów. Dobrze by było żebyś pokazał jak wyglądają te twoje encje. Generalnie zakładam, że oprócz navigation properties zrobiłeś też normalne mapowania na klucze obce, tzn. np. w klasie Order oprócz public virtual Customer Customer; masz też public int CustomerId. Jeśli tak jest to przy dodawaniu do contextu nowego Order w polu Customer daj nulla, przypisz CustomerId (które przecież znasz).
  • Odpowiedz
@niepoprawnyhumanista: @pikej100: Macie racje. Na początku miałem tylko referencje bez kluczy. Na necie były takie przykłady, że w trybie diconnected z tym relacjami to takie cyrki trzeba odwalać. Dodałem potem faktycznie klucz obcy ale nie zdawałem sobie sprawy, że on tak upraszcza sprawę.
Faktycznie teraz chodzi elegancko. Teraz wiem, że wszystkie referencje powinny mieć zdefiniowany też klucz bo bez klucza trzeba się bawić w takie dołanczanie do konktekstu
  • Odpowiedz
#entityframework #csharp #dotnet #programowanie #pytanie

Chcę w trybie disconnected (czyli tworze nowy context do operacji i przekazuje obiekt) dodać entity z referencjami w taki sposób żeby referencje nie były też dodawane jako nowe wiersze do tabeli, ale żeby były referencjami do istniejących wpisów.
Np mam kalse Order z referencjami: Customer i Products.
Chcę dodać do bazy nowy obiekt Order ale nie chcę
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

napisałem w C# repozytorium z metodami CRUD (entity framework i dependency injection ), możecie mi polecić jakiś tutorial jak napisać do tego testy jednostkowe? metody delete, create i update zwracają typ void, a może te wymienione metody powinny zwracać boolean? Wtedy bym mógł napisać np:
var data = objectCRUD.delete(company);
Assert.AreEqual(data, true);
#programowanie
#csharp
#entityframework
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@angular: po co piszesz testy CRUD? To są przecież elementarne operacje więc nie warto ich testować. Jak już chcesz takie rzeczy robić to ogarnij jakąś bazę w pamięci, dorzuć elementy do bazy przy setUp i wykonuj operację. Jak będziesz sprawdzać delete to i tak będziesz musiał zrobić selecta, tak samo z updatem i insertem.
  • Odpowiedz
return context.SaveChanges() == 1;


@angular: SaveChanges() zwraca liczbę wpisów, które zostały zapisane do bazy. Jeśli wyedytujesz kilka rekordów i wtedy wywołasz SaveChanges() to zwrócony wynik >1.
  • Odpowiedz
Mirki, robię projekt zaliczeniowy i mam problem. Otóż pisząc aplikację .NETową przygotowuję coś bardzo podobnego do tego:
https://youtu.be/zWFoZb6EiwU?t=1h23m16s Po kilku dniach siedzenia i zrobienia layoutu stronki itd przyszedł czas na dołączenie bazy danych (korzystając z metody Code first) no i wszystko ładnie tylko mniej więcej w tym momencie pojawia się problem. Wyrzuca mi taki błąd jak w obrazku w linijce:
IdentityResult result = await UserManager.CreateAsync(user, model.Password); (w tym momencie mam kod identyczny do tego
Toms94 - Mirki, robię projekt zaliczeniowy i mam problem. Otóż pisząc aplikację .NETo...

źródło: comment_c91shI4UGbUIjdIYU6N21jaquo4e4Wkb.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#programowanie #aspnet #csharp #entityframework

Jest tu ktoś ogarniający dobrze asp.net'a?
Mam taki projekt: [[github]](https://github.com/MyPCIsBetter/aspnet-vnext-webapi-test)
Próbuję zrobić API do aplikacji. Zamiast danych z sql'a zwraca mi 502 bad gateway. Chodzi o ten adres konkretnie: http://localhost:58607/api/notes/suggested
Rzecz dzieje się konkretnie [[w tym controllerze]](https://github.com/MyPCIsBetter/aspnet-vnext-webapi-test/blob/master/src/ConsoleNotepad/Controllers/NotesController.cs) w
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pietrek558: W dokumentacji masz

public TEntity Entity { get; }

T z przodu oznacza chyba typ generyczny co najprawdopodobniej oznacza ze w twoim przypadku zwroci twoj typ 'Dog' ( zakladajac oczywiuscie ze poprawnie skonfigurowales EF-a)
  • Odpowiedz
Ehhhhhhhh Mireczki będę Was męczyć póki mi się nie uda:D Kolejne pytania w stylu programowanie:)
#kiciochpyta #programowanie #csharp #entityframework
Chcę do DataGrid w WPFie przekazać całą tabelę więc napisałem takiego potworka

gameslistDataGrid.ItemsSource = model.Games_ListSet.Select(x => new { x.Title, x.Platform, x.Discspace, x.Status, x.Genere }).ToList();
Lecz niestety generuje to błędy. Ktoś coś mi pomoże? Odwdzięczę się w miarę możliwości;)
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@przemyslaw-maczka: Ja w jakimś projekcie oparłem to o zapytanie do bazy budowanym stringiem i później wypełnieniem tabeli.

DataSet ds = new DataSet();
var da = new SQLiteDataAdapter(sql, m_dbConnection);
da.Fill(ds);
dataGridView.DataSource = ds.Tables[0].DefaultView;
  • Odpowiedz
@przemyslaw-maczka: W WPF musisz stworzyć ViewModel i dopiero potem ustawić jego instancję jako DataContext w okienu/stronie/kontrolce, po tej akcji będziesz miał do dyspozycji {Binding } a dalej stanie się magia i wszystko się wyświetli - pod warunkiem, że wcześniej coś tam dodasz :)
  • Odpowiedz