Pracuję na C# w Azure Mobile Apps próbując je poznać. I stworzył model, aby link do mojego Azure SQL DB, stworzył DataObject takiego:Dlaczego w modelu danych aplikacji Azure Mobile występuje identyfikator ciągu?
public class Account : EntityData
{
//public int id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string Password { get; set; }
public DateTime dtCreated { get; set; }
public Guid oGuid { get; set; }
}
Zauważ, że wykomentowane publicznej int id powyżej; dało mi zduplikowany błąd kolumny w zapytaniu.
Wreszcie utworzyłem kontroler za pomocą nowo utworzonego konta DataObject.
Więc uruchomiłem aplikację i kliknąłem funkcję "tabele/konto" i zwrócono zero wierszy (ale są dane i mogę zapytać o to z użytkownikiem, którego używam w aplikacji mobilnej lazur).
I wtedy zauważył schemat modelu jako to:
[
{
"id": 0,
"FirstName": "string",
"LastName": "string",
"PhoneNumber": "string",
"Password": "string",
"dtCreated": "2016-07-06T17:45:47.114Z",
"oGuid": "string",
"Id": "string",
"Version": "string",
"CreatedAt": "2016-07-06T17:45:47.114Z",
"UpdatedAt": "2016-07-06T17:45:47.114Z",
"Deleted": true
}
]
Istnieje kilka kwestii widzę ze skonfigurowanym modelu (i nie wiem, gdzie niektóre kolumny pochodzą z ...)
Po pierwsze, id jest wymieniony dwa razy, raz jako int (który musi być mój) i inny id jako ciąg i nie mam pojęcia skąd to się wzięło.
Również w DB, oGuid jest typu uniqueIdentifier; nie ciąg. To może, ale nie musi być problem, ponieważ nie mogę jeszcze przetestować.
Następnie są inne kolumny, które po prostu nie istnieją w moim DB, w tym CreatedAt (datetime), UpdatedAt (datetime), wersja (ciąg) i usunięte (bit).
Myślę, że problem/powód, dla którego nie otrzymuję żadnych danych z tego połączenia, jest niezgodny z danymi.
Czy muszę dodać inne kolumny, które są wymienione w modelu w teście API?
Próbowałem również wywołać/table/Account/3, aby załadować określone konto i nie zwraca żadnych wierszy ... Zgaduję, że to niezgodność modelu, ale nie jestem pewien, czy to jest problem lub coś innego, co go powoduje? Nie widzę żadnych błędów ani ostrzeżeń.
Aktualizacja
zorientowali się, co się dzieje z modelem pierwszym i Azure i jak podłączyć istniejący DB w Azure do nowego kodu. Zamierzam opublikować to tutaj dla nadziei, że to oszczędza czas innych. To powinno być łatwiejsze. Nie jestem fanem codefirst (jeszcze), ponieważ lubię kontrolować DB ręcznie ... Dzięki temu łatwiej jest mi pracować z backendem db.
Najpierw utworzyłem nowy projekt (aplikacja mobilna Azure), następnie pod modelami Prawym przyciskiem myszy kliknąłem model i dodałem nowy model danych jednostki, a następnie dodałem nazwę azurej db, hasło i nadałem mu moją "nazwę profilu utworzonego przez użytkownika" jak używane poniżej. To połączenie należy edytować w pliku web.config, jak pokazano poniżej.
Następnie musiałem stworzyć model dla tabeli w DataObjects (bez wymaganych kolumn MS) i utworzyć kontroler poza obiektem danych. Potem musiałem edytować internet.config i ustawić zakaz jednostki DB ciąg połączenia: przykład:
<add name="[user created preset name]" providerName="System.Data.SqlClient" connectionString="Server=[Azuredb server connection];initial catalog=[DBName];persist security info=True;user id=[user];password=[pass];MultipleActiveResultSets=True"/>
Wreszcie w MobileServiceContext musiałem mapować modelu DataObject do tabeli w Azure SQL i ustawić parametry połączenia do korzystania z domyślnego MS_TableConnectionString do łańcucha połączeń w pliku web.config.
private const string connectionStringName = "Name=[user created preset name]";
i pod OnModelCreating() I dodaje:
modelBuilder.Entity<Account>().ToTable("tblAccount");
przypadku stwierdzenia model (klasa) stworzyłem w DataObjects i tblAccount to nazwa tabeli w AzureDB.
Po prostu uwielbiam, jak Stackoverflow staje się takim piekielnym miejscem dla trolli. Zamknij z powodu wyłączenia tematu? Naprawdę? "Pytania z prośbą o zalecenie lub znalezienie książki, narzędzia, biblioteki oprogramowania, samouczka lub innych zasobów poza terenem projektu są nie na temat Stack Overflow, ponieważ mają tendencję do przyciągania opinii i spamu. Zamiast tego opisz problem i to, co zostało zrobione do tej pory go rozwiązać. " Nie szukam zaleceń dotyczących książek, linków itp. Ale to właśnie zostało dostarczone. Pytanie zostało bardzo dobrze opisane, co zostało zrobione, aby go rozwiązać. Już prawie skończyłem z tą stroną. – DaBlue
Zgadzam się, przegłosowałem ciebie. –
Kolejny komentarz po pracy z tym. Kolumna ID powinna mieć typ "uniqueidentifier", a nie string. – DaBlue