DataSource Controls :: EntityDataSource With Include For Related Columns
Feb 28, 2011
I have a formview with an entityDataSource. I need to include columns from related fields. I have seen many demos, with AdventureWorksDB, that imply that you can do this by using INCLUDE in the entitydatasource declaration. I have tried made many attempts and it just does not seem to work as demonstrated. I have attached the errors below and the EDS. I have also attached a JPEG of the model I am working in. Three errors demonstrating 3 different attempts to include a related table:
DataBinding: 'TmModel.tbICObjectBase' does not contain a property with the name 'Group'
the code declaration for error 1:
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Group") %>' />
DataBinding: 'TmModel.tbICObjectBase' does not contain a property with the name 'tbICTagBase'.
the code declaration for error 2:
<asp:Label ID="Label1" runat="server" Text='<%# Bind("tbICTagBase.Group") %>' />
DataBinding: 'System.Data.Objects.DataClasses.EntityCollection`1[[TmModel.tbICTagBase, TmModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' does not contain a property with the name 'Group'.
the code declaration for error 3:
<asp:Label ID="tbICTagBasesLabel" runat="server" Text='<%# Bind("tbICTagBases.Group") %>' />
EntityDataSource
<asp:EntityDataSource ID="entDSObjectBase" runat="server" AutoGenerateWhereClause="True"
ConnectionString="name=IntouchDBContainer" Include="tbICTagBases"
DefaultContainerName="IntouchDBContainer" EnableFlattening="False"
EntitySetName="tbICObjectBases" EnableDelete="True" EnableInsert="True"
EnableUpdate="True" EntityTypeFilter="tbICObjectBase">
<WhereParameters>
<asp:SessionParameter SessionField="Tag" Name="RecID" Type="Int64" />
</WhereParameters>
</asp:EntityDataSource>
I have two SQL Server tables with Primary Keys (PK) and a Foreign Key (FK) linking the two tables:
1) Table "Order"
OrderID, int, PK AddressID, int, FK ...
2) Table "Address"
AddressID, int, PK City, nvarchar(50) ...
Then I've created an (ADO.NET) Entity Data Model out of those two tables. Now on my (ASP.NET) webpage I put a GridView with an EntityDataSource. In my GridView I want to display two columns:
OrderID City (belonging to that order and linked by the AddressID-key) How can I do that? My problem is: When I configure the Entity Data Source I can select an "EntitySetName" which can be either "Order" or "Address" but not both, nor can I select any kind of relationship. If I select "Order" as EntitySetName then in the GridView I can add the columns
OrderID Address Address.AddressID
Adding the column "Address" displays empty cells. Adding "OrderID" and "Address.AddressID" displays the expected IDs. But how can I add the "City" of the related address to my GridView? Edit: Clarification:
The Entity Framework has created a class "Order" and a class "Address" corresponding to the database tables. The class "Order" has a reference to an "Address" object as a navigation property, corresponding to the 1-n relationship between Address and Order table. Basically I want to have a column in my GridView which displays Order.Address.City. I have tried to add a bound field with "Address.City" as data field to the GridView but it results in a runtime error ("no such property...").
I am using an ADO Entity Model for my ms-sql database.
My database has a Resellers table which has ResellerID (primary key, int) and Name columns along with other data.
I also have an Orders table which contains OrderID (primary key, int), OrderDate, ResellerID (foreign key to Resellers.ReselerID).
If I just do a query like:
[Code]....
I am able to reference order.Reseller.Name just fine with no problems.
However I have an EntityDataSource on my page as follows:
[Code]....
Notice the Include="Reseller" attribute in the datasource... I also have a GridView tied to that datasource as follows: I cut some of it off for breavity:
[Code]....
Now what I have listed above will run with no errors, but what I want to do is replace the column that displays "ResellerID" with the equivilant to order.Reseller.Name. In other words I want my grid to display the reseller's name rather than the numeric ID.
I have tried to change the DataField to "Reseller.Name" but that will generate the following error:
A field or property with the name 'Reseller.Name' was not found on the selected data source.
Is there anyway to do this without me writing a custom select statement in my code behind?
I'v been using SqlDataSource and ObjectDataSource for a while.I would like to know about LinqDataSource and EntityDataSource. Therefore I have 2 questions to ask.1) Why do we need to use those twos? 2) In which cirmustances (Requirements) developers are using LinqDataSource and EntityDataSource?
I have this code, and I need the "it.MembershipOption.Id" value in the "where" clause to be the <%# Eval("Id") %> from ListViewEventsOuter. I tried to add the Eval in the "where" clause but it throws an error.
What would be the best way to extend the EntityDataSource control? I have a site that implements Entity Framework and I current create my model container and add it to the HTTPCurrent context. When I create EntityDataSource controls on the page I have to go into the code behind and set the OnContextCreating to add MY context to the EntityDataSource instead of the one that EntityDataSource creates. This is because in my model I have extended the Partial Classes to support Validation and custom Save/Delete methods.I would ideally like to create a custom control that I can drop onto a page that has its context already set to the context that I created.
I have a GridView that's currently bound to an ObjectDataSource. I would like to see if it's possible to instead bind it to an EntityDataSource. However, I need to be able to apply custom filters to it.
One of the filters corresponds to a bit / boolean property in the database / EntityDataModel. It has 3 possible selections:
[Code]....
[code]....
How can I accomplish the same thing in an eSQL Where clause? There is no COALESCE function, is there an equivalent?
I'm playing with an EntityDataSource and specifying a simple order by clause containing one column name, for instance "it.[DNS_NAME]".
When I run the following:
[Code]....
I get an EntitySqlException saying that @sort's type is incorrect. It is expecting a Transient.rowtype that matches one of the columns. What is going on here? Order by parameters don't really have a meaningful type other than a string in my opinion. When I try specifying DbType.String instead of TypeCode.String, the same error is thrown.
The exception:
'@sort' is not a member of type 'Transient.rowtype[(SOFTWARE_DSPL_ID,Edm.Int32(Nullable=True,DefaultValue=)),(COMPUTER_NAME,Edm.String(Nullable=True,DefaultValue=,MaxLength=64,Unicode=True,FixedLength=False)),(DNS_NAME,Edm.String(Nullable=True,DefaultValue=,MaxLength=64,Unicode=True,FixedLength=False)),(DIRECTORATE_NAME,Edm.String(Nullable=True,DefaultValue=,MaxLength=24,Unicode=True,FixedLength=False)),(OS_BROAD_CAT_NAM,Edm.String(Nullable=True,DefaultValue=,MaxLength=25,Unicode=True,FixedLength=False)),(OS,Edm.String(Nullable=True,DefaultValue=,MaxLength=64,Unicode=True,FixedLength=False)),(EQP_TYPE,Edm.String(Nullable=True,DefaultValue=,MaxLength=64,Unicode=True,FixedLength=False)),(EQP_PROP_NO,Edm.String(Nullable=True,DefaultValue=,MaxLength=10,Unicode=True,FixedLength=False))]' in the currently loaded schemas.
How can I dynamically provide the column name to order by?
A :{ id, selfId, name,} where selfId is a foreign key refered to Table A itself.
I generated the Entity automatically like this:
A :{ string id; A self; string name,} when i update the entity in gridview Edit/Update CommandField
i got the exception:
Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. Source Error:
[Code]....
Stack Trace:
[Code]....
I guess maybe this is caused by:
A is to be updated, and when the EntityDataSource construct the new A, the reference "self" is invalid at that moment. I do not want to modify my DB structure and do not want to lose the self reference, The event EntityDataSource_Updating is not triggered while the exception hit. so i can not access my entity at any time. Maybe the worst idea is deal the whole Update Procedure myself. However, is there any better workaround?
I have the folloing sql server error from my ASP.NET website.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
This seems to be a network related issue. But on the same machine where IIS is running, I have another C# application running that is not experiencing this problem. This happens after the website has been running for a few weeks. Will this be because the database connections are opened but not closed properly?. I wrote a test web page where i just open connection but not close it and I got Time out error when connection pooling is maxed out. Is this memory issue? Memory that are allocated are not deallocated in timely fashion?..
Everything is working fine for a few weeks and after that I get the above network error.
Let say you read a customer record into Customer object. Do it read all the related records across tables at the same time Or it only reads when you do from o in customerobject.orders
My dataset table data is from multiple tables (showing on a gridview),How to update the database tables using batch udpate on clicking submit, if the data is from a signle table, no problem, but I am not sure how to handle if the datais from mulitiple tables? If I have related tables, do I need put them in differet tables in the dataset?
I have a basic CMS which I'm adding to a site to display some downloads organised into groups. I have two tables, one for the groups and one for the downloads. I'm using a repeated to display the groups with another repeater inside to display the children. This works perfectly.
However some of my download groups may not have any downloads related to them and I'd like to handle this by filter the groups so that only those with a relate download record(s) are shown.
I'm trying to do this with the query which populates the top repeater based on some ideas I read but I must be going wrong with the syntax.
Here is what I'm using to try and only select downloads groups which have downloads linked to them by the download group ID.
[Code]....
Can anyone offer any thoughts on how I should construct the query to perform this?
I have an application that I am developing using ASP.Net with visual basic code. I have a table called "Customers" that contains 3 fields. The name of each field is "Name", "LocationA", and "LocationB". I want to code a select query that list two columns. The first column should contain the field "Name". I want the second column to contain the value in the field "LocationB" if "LocationB" is not null, else I want the second column to contain the value in the field "LocationA".
I am using Asp.Net MVC 2.0 for creating a user and assigning properties to the user at the same time. I am using my Windows account to access database on my local computer. I am using pre-installed MVC code o create a user with unique user name and password. User is created OK. Then I want to add profile properties like First and Last name at the same time.
where profileInformation is a RegisterModel and has user info.
When I am trying to:
profileBase.SetPropertyValue(.....);
I am getting the following error # 2147467259 A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Shared Memory Provider, error: 40 - Could not open a connection to SQL Server)"}
Why is my connection string works fine the first time and not working now? And how to configure connection to use TCP-IP?
I have SQL Server Browser running ander Local account and openned port in my Firewall.
I created a simple search form which populates a gridview from sql server. I use 'contains' on a varchar(max) field which has a full text index. I find if I do a search for "Mexico Argentina", I get multiple results, which is good.One thing my sql server stored procedure is doing is inserting the word 'AND' between words. I do this because I want all words to be found. So if the user inputs "Mexico Argentina", I am converting that to "Mexico AND Argentina"But if I have even one 'noise word' in the search string, I get no results at all. For instance, there might be a sentence in my database table saying "I prefer Mexico to Argentina" but if I put that sentence in, I get no results at all. The database is seeing my converted string:I AND prefer AND Mexico AND to AND ArgentinaAnd finds nothing.I also have another form, which does a more advanced search that allows 'exact phrase'. If the user chooses 'exact phrase', then I don't insert AND anywhere. Instead, I surround his phrase with 4 apostrophes - 2 before the phrase, and 2 after.So now the database sees:' ' I prefer Mexico to Argentina ' ' (I've put a space between apostrophes here to make it clearer to view.Now I not only get no results, I get an error message.
I have- empId - PK, CurrentUserId in one table,mpId- FK in other table.now i want to get empId of related currentUserId ,and want to add empId in other table having FK,using Repository,what will be in create method?