2010-07-28 12 views
5

Mam LINQ do Entities app i projekt bazy danych do zarządzania schematu w VS 2010 rozwiązanie targetowania .NET 4.0. Model jednostki jest obecnie odtwarzany z poziomu bazy danych. Jedna z tabel jest zdefiniowana za pomocą kolumny typu datetime. Projekt bazy danych jest skonfigurowany do korzystania z trybu zgodności SQL Server 2005, a więc wszystkie wdrażają OK.LINQ to Entities tworzy kwerendę zawierającą datetime2 na SQL 2005 Express

Właśnie napotkasz problem, gdzie pojawia się instrukcja UPDATE poprzez Entity Framework do korzystania datetime2 zamiast datetime, co powoduje wyjątek ponieważ SQL 2005 nie obsługuje tego typu danych:

System.Data.UpdateException: An error occurred while updating the entries. 
See the inner exception for details. ---> System.ArgumentException: The version 
of SQL Server in use does not support datatype 'datetime2'. 

od śladu stosu jest wydaje się, że błąd wydaje się być występujące wewnątrz:

System.Data.Mapping.Update.DynamicUpdateCommand 

przejrzałem wszystkie moje kodu SQL i kodu jednostki i potwierdziła, że ​​nie istnieją odniesienia do datetime2 (w tym pliku dbschema). Mogę tylko stwierdzić, że typ danych jest generowany w dynamicznym zapytaniu SQL generowanym przez strukturę encji.

Jak mogę to potwierdzić lub odmówić i jak temu zapobiec? Framework Entity nie wie, że poprosiłem projekt db, aby ustawić tryb zgodności na rok 2005, i nie widzę sposobu, aby zwrócić uwagę na wersję, na którą patrzy. Za to, co jest warte, stworzyłem ten projekt na komputerze, na którym zainstalowano 2008 Express, ale okresowo przełączam się na inny komputer, który nie (i nie może jeszcze dokonać aktualizacji).

+2

Dla każdego, kto ma ten problem z LINQ do SQL, można zmienić typy danych pól tabel na "smalldatetime" w SQL Server. Następnie ponownie przeciągnij tabele do DBML, przekompiluj, ponownie wdróż i powinieneś ustawić. Nie mogłem znaleźć odpowiednika ProvidermanifestToken dla LINQ do SQL –

Odpowiedz

13

Musisz zmienić ProviderManifestToken w swoim EDMX na wartość 2005. Prawdopodobnie wygenerowałeś swój DB na DB 2008. Dokonaj tej zmiany, a EF przestanie używać składni z 2008 roku.

+0

perfect! Dziękuję Ci! –

+0

Bardzo przydatne, wielkie dzięki. – Fanda

Powiązane problemy