Salakhetdinov Shamil
mcp2004 at mail.ru
Mon Mar 9 16:23:58 CDT 2009
Hi Gustav,
Thank you for your information on ADO.NET Entity Model. I must say I personally haven't yet tried to use it...
--
Shamil
-----Original Message-----
From: "Gustav Brock" <Gustav at cactus.dk>
To: <dba-vb at databaseadvisors.com>
Date: Sat, 07 Mar 2009 15:41:25 +0100
Subject: Re: [dba-VB] ADO.NET Entity Model
> Hi all
>
> Also, the fill method is now vastly reduced.
>
> protected void OwnerDropDownList_Init(object sender, EventArgs e)
> {
> LocationDropDownList.DataValueField = "Id";
> LocationDropDownList.DataTextField = "Location1";
> }
>
> private void FillLocationDropDownList()
> {
> LocationDropDownList.DataSource = _erhvervslejeContext.LocationByOwnerQuery;
> LocationDropDownList.DataBind();
> }
>
> /gustav
>
>
> >>> Gustav at cactus.dk 07-03-2009 15:27 >>>
> Hi all
>
> I finally found out how to return Location rather than anonymous types:
>
> public ObjectQuery<Location> LocationByOwnerQuery
> {
> get
> {
> ObjectQuery <Location> locationByOwner;
> if (_locationFilterOwner != null)
> {
> locationByOwner =
> Location
> .Where("it.Owner.Id = @ownerId",
> new ObjectParameter ("ownerId", _locationFilterOwner.Id));
> }
> else
> {
> locationByOwner =
> Location;
> }
> return locationByOwner;
> }
> }
>
> Now, how could I use the object Owner as parameter and not Owner.Id?
> This is not accepted:
>
> .Where("it.Owner = @owner", new ObjectParameter ("owner", _locationFilterOwner));
>
> as only scalar values are accepted as parameter values.
>
> /gustav
>
>
> >>> Gustav at cactus.dk 06-03-2009 17:53 >>>
> Hi all, sorry being serious on a Friday, but this is really bugging me ...
>
> I wish to retrieve a list of locations for the DataSource of a DropDownList.
> The entity model does have a collection of Location which I can retrieve and cast to a list like this:
>
> > In .. .aspx.cs file:
>
> private void FillLocationDropDownList()
> {
> var locationQuery = (from l in _erhvervslejeContext.Location
> select new
> {
> Id = l.Id,
> Location1 = l.Location1
> }).ToList();
> LocationDropDownList.DataSource = locationQuery;
> LocationDropDownList.DataBind();
> }
>
> However, I have added an ObjectQuery to the entity model, which filters Location, LocationByOwnerQuery (shown below):
>
> private void FillLocationDropDownList()
> {
> var locationQuery = (from l in _erhvervslejeContext.Location
> select new
> {
> Id = l.Id,
> Location1 = l.Location1
> }).ToList();
> LocationDropDownList.DataSource = locationQuery;
> LocationDropDownList.DataBind();
> }
>
>
> Now, if I try to retrieve this as a list as shown, an error is raised at the var line:
>
> " .. Cannot create a constant value of the type 'erhvervslejeModel.erhvervslejeEntities'.
> Only primitive types ('like Int32, String og Guid') are supported in this context. .."
>
> I know I could just do a foreach loop to add the items into the listbox but that is just a bit too primitive.
>
> Any suggestions?
>
> /gustav
>
> > in public partial class erhvervslejeEntities : global::System.Data.Objects.ObjectContext
>
> public ObjectQuery<Location> LocationByOwnerQuery
> {
> get
> {
> IQueryable query;
> if (_locationFilterOwner != null)
> {
> query =
> from
> Location location in this.Location
> where
> location.Owner.Equals(_locationFilterOwner)
> select
> location;
> }
> else
> {
> query =
> from
> Location location in this.Location
> select
> location;
> }
> return (query as ObjectQuery<Location>);
> }
> }
>
> ***
>
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
>