Korzystanie Z Systemu.Data.Linq w widoku brzytwy
Może mam fundamentalne nieporozumienie co tu się dzieje, ale mam problem z zapętleniem przez klasę LinqToSQL w moim widoku razor:
<h3>Owners</h3>
@foreach (var ThisOwner in Prop.PropertyOwnerships.Where(p=p.bIsOwner.Value==true))
{
<div class="ODEditEntry">
...
Dostaję następujący błąd:
Komunikat o błędzie kompilatora: CS0012: Typ ' System.Data.Linq.EntitySet " 1 " jest zdefiniowany w zestawie, do którego się nie odwołuje. Musisz dodać odniesienie do systemu assembly'.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
I tried putting @ using System.Data.Linq na górze pliku cshtml, ale to mi mówi, że Linq nie istnieje w systemie.Przestrzeń nazw danych. To oczywiście nieprawda i tak, mam system.data.linq jako punkt odniesienia w moim projekcie.
Jakieś pomysły? Czy potrzebny jest import? Czy mogę po prostu nie robić rzeczy w stylu Linq w moich poglądach na brzytwę? Na to wygląda....dziwne?4 answers
Musisz zaimportować przestrzeń nazw do widoku, dodając @using System.Data.Linq
u góry widoku. Jeśli jednak chcesz mieć go we wszystkich swoich widokach, musisz dodać <add namespace="System.Data.Linq" />
do sieci.config w folderze widoki:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Data.Linq" />
</namespaces>
</pages>
</system.web.webPages.razor>
Chociaż nie dotyczy to Twojego pytania, naprawdę powinieneś spróbować przenieść tę logikę z widoku i do kontrolera, ułatwi to debugowanie i oznacza, że prezentacja jest oddzielona od logiki biznesowej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-06 08:25:45
Naprawiłem to, klikając prawym przyciskiem myszy System.Data.LINQ assembly reference, następnie hit properties. Tam Ustaw Copy Local na true.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-06 16:38:36
Czy twój LINQ-to-SQL datacontext istnieje poza projektem WWW (np. w innej bibliotece klas)? Jeśli tak, to tam, gdzie dodałeś odniesienie do tego projektu, wszystko jest dobrze budowane, ale w widoku Razor próbujesz uzyskać bezpośredni dostęp do typu z System.Data.Linq
assembly bez odwoływania się do niego w projekcie sieci web. Spróbuj dodać odniesienie do głównego projektu sieci Web i zobacz, co otrzymasz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-05 11:26:30
Musisz dodać odniesienie do System.Data.Linq
w swoim projekcie i / lub w swoim Web.config
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-17 14:49:28