2012-12-19 9 views
6

Próbuję utworzyć sterownik linqpad i mam pytanie:tworzenia DynamicDataContextDriver dla LINQPad zC#

Kiedy tworzę DynamicDataContextDriver, muszę utworzyć klasę TypedDataContext.

  1. Co powinienem w nim umieścić?
  2. Jak zostanie zaludniony?
  3. Czy mogę kontrolować, w jaki sposób zostanie wypełniony?
  4. Jeśli używam tutaj bazy danych obiektów, czy jest coś, o czym muszę pamiętać?

Znalazłem odpowiedź here, ale nie mogę znaleźć tam wszystkich powyższych odpowiedzi.

Odpowiedz

3

Wpisany kontekst danych to po prostu klasa z właściwościami/polami odpowiednimi do odpytywania. Te właściwości/pola zwykle zwrócą IEnumerables lub IQueryables. Na przykład:

public class TypedDataContext 
{ 
    public IEnumerable<Customer> Customers { get { ... } } 
    public IEnumerable<Order> Orders { get { ... } } 
    ... 
} 

podczas korzystania z programu Visual Studio, aby utworzyć nowy element typu „LINQ do klas SQL” lub „ADO.NET Entity Data Model”, Visual Studio tworzy kontekst danych wpisywanych do ciebie, który jest doskonały przykład tego, czego LINQPad oczekuje. Wpisany kontekst danych może również ujawniać metody (np. Do mapowania przechowywanych procedur lub funkcji) - w rzeczywistości może ujawnić wszystko, co ma sens dla użytkownika końcowego.

Po uruchomieniu zapytania w LINQPadzie, które ma połączenie, LINQPad podklasuje wpisany kontekst danych związany z połączeniem, dzięki czemu kwerenda ma dostęp do wszystkich swoich pól/właściwości. Właśnie dlatego Customers.Dump() jest prawidłowym zapytaniem - możemy po prostu uzyskać dostęp do Customers bez konieczności wcześniejszego tworzenia kontekstu wpisanych danych.

Sterownik LINQPad może działać na jeden z dwóch sposobów. Może działać tak jak Visual Studio i budować kontekst danych maszynowych automatycznie i w locie (dynamiczny sterownik kontekstowy danych) lub może wyodrębnić kontekst danych maszynowych z istniejącego zestawu dostarczonego przez użytkownika (statyczny sterownik kontekstowy danych). Po dodaniu połączenia w LINQPad, można zauważyć, że sterowniki są wymienione w dwóch list (kontekst danych Budowa automatycznie = dynamiczny kierowca i Użyj kontekstu danych wpisywanych z własnego zespołu = statyczny kierowcy).

Wpisany kontekst danych jest tworzony w momencie wykonania zapytania. Ponieważ jego właściwości zwykle zwracają leniwie ocenione IEnumerables/IQueryables, nie jest pomocne myślenie o "zapełnieniu" tego. Jednak będzie musiał wiedzieć, jak uzyskać dostęp do podstawowego źródła danych, a robi to przez passing arguments into the constructor.

LINQPad normalnie utrzymuje domenę aplikacji zapytania między kolejnymi zapytaniami, co może być przydatne przy buforowaniu i optymalizacji w przypadku pisania sterownika bazy danych obiektów. Poza tym nie powinno być żadnych specjalnych rozważań dla baz danych obiektów.

Powiązane problemy