Vra

Gegewe 'n navraag soos:

SELECT table1.field1 FirstField, table2.field2 SecondField
    FROM table1
    INNER JOIN table2 ON table1.FK = table2.PK
    WHERE table1.somefield = 'somevalue';

My doel is om 'n sterk getik gevolg stel met behulp van .netTiers terugkeer. Ek neem aan dat ek 'n oog nie kan gebruik, want die WHERE klousule 'n parameter, wat nie kan oorgedra word na die oog nodig het. A gestoor proses kan verby die parameter 'somevalue' maar gee 'n swak getikte DataSet of DataReader.

Ek reken ek net ontbreek 'n konsep hier. Net om duidelik te wees, wat ek wil eindig met is om in staat wees om so iets te skryf:

TList <some-entity-name> entityList = DataRepository.SomeProvider.Get( "somevalue" );

foreach ( some-entity-name entity in entityList ) {
    DoSomethingWith( entity.FirstField, entity.SecondField );
}

Ek wil graag 'n oplossing te vind wat 'n bediener-kant filter na die navraag het uitgevoer behels vermy; die betrokke tafels is baie groot.

Was dit nuttig?

Oplossing

Skep 'n oog en gebruik die sterk getik ParameterBuilder voorwerp om die oog op die spesifieke kolom filter. Ek kan nie heeltemal onthou wat laag hierdie voorwerp is in.

Dit is hoe jy dit sou gebruik:

MyViewParameterBuilder builder = new MyViewParameterBuilder();
builder.AppendEquals(TableColumn.Column, "value");
DataRepository.MyViewEntityProvider.Find(builder.GetParameters());

Ek mag verkeerd wees, maar ek glo nie net-vlakke eintlik 'filters' die tLys / Vlist voorwerp met die metode hierbo, en dit is wat die naam van die voorwerp sou raai. Die bouer genereer daar waar klousule en nettiers 'n navraag teen jou databasis met behulp van hierdie klousule loop.

Jou 2de opsie is om te probeer skep van 'n gestoor proses, maar slegs indien die resultset van jou gestoor processed ooreenstem met die skedule van een van die tafels in jou databasis. Andersins, sal netto-vlakke nie weet hoe om te genereer daarteen. Jy kan meer lees oor wat hier

Ander wenke

As jy wil 'n tLys versameling met 'n aan te sluit wat jy nodig het om 'n persoonlike gestoor proses te skep. Oplossing hier: http://benpowell.org/ blaai-en-sortering-in-'n--nettiers maat gestoor-prosedure /

As jy 'n scenario soos volg:

  • Account (PK AccountId)
  • kliënt (PK KlientID)
  • ClientAccount (PK KlientID, AccountId)

Solank as wat jy het die korrekte vreemde sleutels opstel, sal .NetTiers jou te voorsien met die toepaslike metode:

AccountService s = new AccountService();
TList<Account> accountCollection = s.GetByClientIdFromClientAccount(1);

Daar is ook 'n oorlaaide metode gegenereer wat ondersteun blaai (ongelukkig geen orderby klousule).

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top