C# - Proper Implementation Of Nested API Calls Using Connection Pool And Nested Transactions?
Jan 4, 2010
I need to know the best way to do the following. I have nested business level APIs (say level 1 & level 2). L1 needs to call L2. Both APIs use the database layer directly at their own nesting levels.
Now, in the database layer, I fetch the db connection from the pool each time as follows:
SqlConnection conn = new SqlConnection(connString);
conn.Open();
Is it proper to fetch the db connection each time on every DB level call as above? I know it will return a connection from the ASP.NET connection pool. However, wouldn't it be better to maintain the same DB connection throughout the nested calls (or throughout the current http request lifetime)? Will fetching a connection from the pool each time cause issues with nested TransactionScopes?
Is there a better, cleaner way to do this in ASP.NET 2.0?
An ASP.NET 2.0 page displays a datalist of records. Each record can have many dates, so the dates are in a nested gridview (I chose a gridview over a datalist here because we want to be able to delete a date and this is easier done in a gridview). The parent record can never be deleted.
The display works fine: the nested gridview gets its datasource during the parent datalist's OnItemDataBound event.
The problem: the nested gridview's delete function. The date gets deleted without a problem (handled in the OnRowDeleting event), but somehow the redisplay is untying all the other nested gridviews from their datasources. The delete does not appear to cause a page postback, so I don't know how the other nested gridviews are losing their datasources.
I'm trying to create a nested gridview, but I'm stuck at the editing/deleting part of the nested gridview. (Below is my code).The nested gridviews are filling out nice, I've set the DeleteParameter in the SQLDataSource, but I'm still getting this error when trying to delete a criteria: 'The Gridview 'gvCriteria' fired event RowDeleting which wasn't handled.'I've tried to create a method 'gvCriteria_RowDeleting', but that didn't seem to work out.Someone who can give me a piece of advice? Would it be possible to fill the gridview without using gvDomain_rowDataBound? Dries
Have the MultiView1 display only if Frieght values exceed 15.50. If check box is checked, retreive the row values of the Gridview1 and Gridview2 to perform a task.There will be two check boxes. One will be conditionally hidden. Each check box has a different function.
Example: Send an email notifying this entry has been flagged. I am using Visual Studio 2005 with ASP.NET 2 due to availability of resource. I have checked out numerous sites without finding the specific answer.
For example: [URL]
The following a simplified representative example of what I am trying to accoumplish. It uses the Northwind.mdb access database with just the Customers and Orders table.
Are there any transactions around multiple webservice calls.Let me start with a commonly used example -- the travel agency. A customer intends to create a travel plan through an online travel agency. To do this, the online travel application calls the following three Web services:
These three services are available from three separate vendors. If any one of these three services fails, the customer does not wish to proceed with the transaction (again, either all three services must succeed or none at all).My language programming is Asp.net c#.
I'm fairly new to dependency injection but it seems like a proper DI implementation will be fairly complex.
For example, DI requires a centralized class that manages the configuration and resolves the dependencies at runtime.
DI is also based on the concept of using interfaces. For example, a SpecialLogger should use an ILogger interface.
The centralized DI manager class will need to register types - for example, associate ILogger to SpecialLogger.
SpecialLogger will also need to implement the ILogger interface so SpecialLogger can be used through the DI ILogger interface.
Therefore, it seems like a sln using DI will need multiple projects to support DI. Here is an example for logging:
* MyCompany.MyDivision.Framework.DI.Management - this would have the DI manager where dependency types are registered and resolved at runtime * MyCompany.MyDivision.Framework.Logging - this would have the implementation of a logging class. The main logging class would need to implement ILogger. * MyCompany.MyDivision.Framework.DI.Interfaces - this would have the ILogger interface.
Interfaces would need to be stored in a separate class library from the DI manager because both the DI manager and SpecialLogger use the ILogger interface. Since the DI manager associates SpecialLogger to ILogger a circular reference would be encountered without a separate class library to store the ILogger interface.
I have been learning C# for the last year or so and trying to incorporate best practices along the way. Between StackOverflow and other web resources, I thought I was on the right track to properly separating my concerns, but now I am having some doubts and want to make sure I am going down the right path before I convert my entire website over to this new architecture.
The current website is old ASP VBscript and has a existing database that is pretty ugly (no foreign keys and such) so at least for the first version in .NET I do not want to use and have to learn any ORM tools at this time.
I have the following items that are in separate namespaces and setup so that the UI layer can only see the DTOs and Business layers, and the Data layer can only be seen from the Business layer. Here is a simple example:
[Code]....
Am I completely off base? Should I also have the same properties in my BLL and not pass back DTOs to my UI? what is wrong and what is right. Keep in mind I am not a expert yet.
I would like to implement interfaces to my architecture, but I am still learning how to do that.
I'm currently implementing a project using asp.net, c# and the MVP (Model-View-Presenter) pattern. The main purpose of this solution is to deliver a graph to the consumer, to be used by a variety of systems. It is basically a custom graph server.
The view page in this particular case has an MSChart control on it, which has to be dynamically populated and configured based on parameters in the QueryString. This can be as diverse as totally different types of data sets, display modes and so on, using a lot of the properties of the chart control.
Many of these properties are again of types which are particular to the chart control and would require the same dependencies as the chart control itself if they are to be set by the presenter.
I'm trying to figure out the best way to expose the properties to the presenter so it can work its magic.
Should I:
Just expose the whole chart object and live with a system.web type dependency in the presenter project? Make accessor and translation properties for all of the chart control properties so that I don't have the dependency, but add lots of complexity? Other, that I haven't thought of?
To me it seems that it would be against the MVP pattern to bubble a display control up into the presenter, but it seems that trying to map all the properties to DTOs or similar would be a lot of work that would add a lot of complexity, and while the solution would be somewhat more loosely coupled, I'm not sure the gain would be worth it in this case. How would you implement something like this, given MVP?
In Nested Grid, we get a '+' sign. The problem is that '+' sign appears all times, even if there are no child records for that row. 1. Can we enable/disable OR Hide/Unhide '+' sign. depending on if child rows exits.2. OR alteast we can put some bgcolor indicating to user that this record do have child rows. Without any indicator user may feel quite annoying to click on '+' sign and nothing happens.
I have designed a collapsible nested gridview project using this article as a reference Collapsible Nested GridView with Paging using ASP.Net. I am trying to modify the code to collapse a gridview when another gridview is expanded so that only one nested gridview will be open at a time.
I have a DataSet that I have added to my project where I can Insert and Add records using the Add Query function in Visual Studio 2010, however I want to add transactions to this, I have found a few examples but cannot seem to find one that works with these.
I know I need to use the SQLClient.SQLTransaction Class somehow. I used the Add New Data Source Wizard and added the Tables/View/Functions I need, I just need an example using this process such as How to get the DataConnection my DataSet has used. Assuming all options have been set in the wizard and I am only using the pre-defined adapters and options asked for in this wizard, how to I add the Transaction logic to my Database.
For example I have a DataSet called ProductDataSet with the XSD created for this, I have then added my Stock table as a Datasource and Added an AddStock method with a wizard, this also if a new item calls an AddItem method, if either of these fails I want to rollback the AddItem and AddStock in this case.
I've been getting this error recently, after several reloads of the same page:
System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached So I am thinking there must be some queries or calls in the app I used incorrectly that causes them not to release the connection. Is there any tools out there that allows me to somehow peek into the pool to see who is hanging on to what?
I have created web application and wrote single connection string in a class file hosted at live server.
I'm getting error sometime "Connection pool size exceeded".
My other applications are hosted on same server [server1] and all application hit same server [server2] having database. Is it mean, my every application using same connnection pool because of same IIS or same memory and encountered error said "Connection pool size exceeded".
How can I get rid of this problem ? (I have already tried manipulation of pool size)
I am working on a web application now a days, when i have uploaded it on server it creates exception message ,"connection Pool max size", but i have opened and closed connection properly.
we are facing a big problem while running our website on the production server. We decided to start using the connection pool. we added these statments to AppSettings section at the configuration file to provide the connection information to the DataAccess Layer class to access our Oracle Database.
<appSettings> <add key="ConnectionString" value="Data Source=server;User ID=*******; Password=********; Validate Connection=true; Max Pool Size=200; Min Pool Size=10;Connection Lifetime=120; Connection Timeout=60; Incr
Does the same connection string used on two different physical servers hosting different web applications that talk to the same database draw connections from the same connection pool? Or are pooled connections confined to at the application level?
I ask because I inherited a 7 year old .NET 1.1 web application which is riddled with in-line SQL, unclosed and undisposed sql connection and datareader objects. Recently, I was tasked to write a small web app that is hosted on another server and talks to the same database and therefore used the same database connection string. I created a LINQ object to read and write the one table required by the app. Now the original .NET 1.1 app is throwing exceptions like
"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."
Maybe these are unreleated, but wanted to get your opinions to make sure I cover all my bases.
We have been getting this Oracle connection pool exception a lot recently for our ASP.NET website. This is the detailed exception message:
Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
This is our connection string
User ID=user1;password=password1;DATA SOURCE=Datasource1
how to set max pool size to 1 so that I can debug it on my local?
what is the recommended pool size for a website with 10,000 users?
i have a web application that use a MySql DataBase. In a page, i have used the sqlDatasource control. The problem is that the conection with the database doesn't closed and i have a lot of open conections until show me the error that says me that the conection pool is full.
I'm getting the following error after uploading my site on live server:Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.i'm using the following code:
public static IQueryable<Property> Properties(string name, string city, string state, int pageIndex, int pageSize, ref int total) { ServerDataContext server = new ServerDataContext(); total = server.Properties.Count(x => x.Name.StartsWith(name) && x.City.StartsWith(city) && x.State.Contains(state)); return server.Properties.Where(x => x.Name.StartsWith(name) && x.City.StartsWith(city) && x.State.Contains(state)).Skip(pageIndex * pageSize - pageSize).Take(pageSize); }
I have a requirement I should connect to MS SQL server under IIS Application pool account from ASP.NET application where Windows Authentication is enabled. I cannot use user name and password in connection string.
ASP.NET application should use Entity Framework 4.0 to work with data.
I need to connect to a WebService provided by someone else. This WS (all https) has three methods that are accessible without having logged on:
login, logoff, getVersion . All other methods require that the login-method has been called before. Nothing special unto this point. However, the docs state that I have to make sure that (quote):
"All method calls between login and logoff are to be carried out by means of the same persistent http-connection (key word: http persistent connections or http connection reuse"
I seem to be unable to figure out how that would work - all WS'es I ever utilized were either taking user/pwd combinations in each method call or the login-method returned something like a SessionID which was then used for each subsequent call to a given method (i.e. passed as a parameter). If I call the login-method and subsequently call any method that requires authentication, the call will fail with an exception telling me that I need to log in first.
Does anyone know if its possible to have a nested repeater, with the nested repeater initially collapsed and expandable via the ajax CollapsiblePanelExtender
I doing a nested for loop to achieve from #123,33.5,1283485089#44.6,Timestamp#124,66.7,timestamp#55.7,timestamp#125,76.4,timestamp#42.8,timest amp whole string to #123,33.5,1283485089#123,44.6,Timestamp#124,66.7,timestamp#124,55.7,timestamp#125,76.4,timestamp#125 ,42.8,timestamp. My code get me back same thing again
Dim i = 0 Dim rsplitdata As String() Dim row, item As String Dim inex Dim rdata As String() = TextBox1.Text.Split("#") For Each row In rdata rsplitdata = row.Split(",") If (i = 0) Then inex = rsplitdata(0) 'rdata(i) = inex + "," + rdata(i) Else rdata(i) = inex + "," + rdata(i) End If i = i + 1 Next For Each row In rdata rsplitdata = row.Split(",") For Each item In rsplitdata TextBox2.Text = TextBox2.Text + item.ToString + vbCrLf Next Next