> 
> > > > I'm just messign about with linq at the moment.
> > > >
> > > > I was wondering if there is a standard way to map between linq
> > > structures.
> > > >
> > > > i.e. I have a normalised database schema created in the
designer, I
> > > don't
> > > > want to bind to this directly but obviously to some slightly
> > > denormalisied
> > > > version of it.
> > >
> > >         I don't see the 'obvious' part in that remark. For
FETCHING,
> it
> > > might be handy to have denormalized data in some areas, but for
saving
> entities,
> > > you definitely want to stick to the abstract entity definitions in
> your
> > > program's reality, not some denormalized pile of tables.
> >
> > UI usually operate on schema's that are derived and
> > denormalised...though I accept that in MS world this is less true.
> 
>         what does 'MS world' have to do with it?
> 

Because different OO/RDB infrastructures encourage different approaches.

>         If you denormalize data, that's in general only done for
> performance
> reasons. What you refer to isn't denormalizing data, it's creating new
> sets
> based on entity instances in the DB via projections on joined sets.
This
> data
> is by definition readonly.

Some of it will be readonly. (lets leave the denormalisation bit it
doesn't matter).

> 
> > >         Denormalization for performance purposes therefore isn't
> useful
> > > for entities. It's only useful for new sets, derived from the
entity
> > > instances, e.g. all orderid's with the customer's companyname
joined
> to
> it.
> >
> > Generally front end show all sorts of data that is derived or
> > denormalised from the underlying data, a simple grid map contain
several
> > joins, sometimes it makes sense to display those joins in separate
> > grids, often not.
> 
>         Though that's readonly data if it's presented in a single set.
You
> can
> create that easily with linq queries, that's the purpose of querying
on
> top of
> a normalized model:
> 
> var q = from c in nw.Customers
>          join orders o in nw.Orders on c.CustomerID equals
o.CustomerID
>          select new { o.OrderID, c.CompanyName};

Correct....but this is a collection of anonymous types...it would be
much nicer if they were explicitly named....can you use named types in
the select clause?...I'll have a go.

> 
> you then bind the q to a grid, done. You create new sets using
> projections. If
> you want to 'extend' entities to contain data from other entities,
you're
> IMHO
> not doing yourself a big favor, as the model is then in theory wrong,
plus
> you
> get problems when saving data.
> 

As you say it will have to be readonly...this is fine.

> > > So take a look at indexed views. These are stored as-is and
therefore
> do
> > > offer performance optimizations. You then should be able to map an
> entity
> onto
> > > such a view. Just for fetching of course, Saving data should be
done
> with
> > > normal entities.
> > >
> >
> > Ok I'll take a look, but I'm not really interested in
performance...I
> > simple want to map a normalised collection of Linq data
> >
> > Customer & orders & location....to a denormalised/derived one
(Customer
> > extended to include derived orders and location) & orders......
> 
>         so you want to create a parallel hierarchy to customer-order-
> location?

Yes...and map from one to the other in a manner you describe, but
preferably using named types.




CONFIDENTIALITY NOTICE

This e-mail (and any attached files) is confidential and protected by 
copyright (and other intellectual property rights). If you are not the 
intended recipient please e-mail the sender and then delete the email and 
any attached files immediately. Any further use or dissemination is 
prohibited.

While MTV Networks Europe has taken steps to ensure that this email and 
any attachments are virus free, it is your responsibility to ensure that 
this message and any attachments are virus free and do not affect your 
systems / data.

Communicating by email is not 100% secure and carries risks such as delay, 
data corruption, non-delivery, wrongful interception and unauthorised 
amendment. If you communicate with us by e-mail, you acknowledge and 
assume these risks, and you agree to take appropriate measures to minimise 
these risks when e-mailing us. 

MTV Networks International, MTV Networks UK & Ireland, Greenhouse, 
Nickelodeon Viacom Consumer Products, VBSi, Viacom Brand Solutions 
International and Comedy Central are all trading names of MTV Networks 
Europe.  MTV Networks Europe is a partnership between MTV Networks Europe 
Inc. and Viacom Networks Europe Inc.  Address for service in Great Britain 
is UK House, 180 Oxford Street, London W1D 1DS, UK.

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to