|
N a v a n e e t h wrote: these objects will be created and ready to use
With what settings? How will the pool know what the user wants to connect to until asked?
N a v a n e e t h wrote: When SqlConnection object is requested, it will be served from the pool if available.
If the connection string matches, yes.
N a v a n e e t h wrote: gets disposed properly and return back to the pool
I understand that happens at Close. So close the connection, but retain the Connection object. When you reopen the connection, the pool tries to use an existing connection.
http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.85).aspx[^]
|
|
|
|
|
PIEBALDconsult wrote: With what settings? How will the pool know what the user wants to connect to until asked?
My bad, you are correct. Pool will be initiated only when a connection is first opened.
PIEBALDconsult wrote: I understand that happens at Close
You can call dispose as well. It happens at dispose too. Here is what MSDN says,
We strongly recommend that you always close the connection when you are finished using it so that the connection will be returned to the pool. You can do this using either the Close or Dispose methods of the Connection object, or by opening all connections inside a using statement in C#, or a Using statement in Visual Basic.
|
|
|
|
|
In one of my database access schemes I have a Dictionary<string,connection>, the first connection is named "" and is used by default, but when necessary I can use:
dbc.AddConnection ( "name" )
dbc [ "name" ].Execute...
dbc.RemoveConnection ( "name" )
So I can be reading with the default connection and use another to perform other actions as needed.
|
|
|
|
|
Well a lot of answers from you thanks =)
So to the question, "why doesn't get every thread a db-connection?", the answer is, that i make a server-application and for each user-connection i have on thread, but i don't have a huge amount of requests from each user, so it doesn't make sense to give each user a own db-connection, and the second is i don't know how many users will use the server.
So the idea with this RequestManager. I make maybe 5 or 10 (or how many i need) instances from it, stored in a List<requestmanager>. Each RequestManager has an own DB-Connection and handles the Reader for itself. If a user now makes a request, the class of the User-Connection starts the Method "GetData()" (give the baby a name ) from one of this RequestManagers. So i can make a few requests parallel and if i need more i can easily put even more RequestManager in this List<>.
How does my application get the information to put more RequestManager-instances into this list? Well that's easy, over a configuration-file. I let my application reload them every 5 minutes and it checks how many RequestManager i need and so i'm able to configure them while my system is running.
Your examples, had the nearly the same idea as mine. But i only handle with the "RequestManager" and not with Reader and Connections seperately. I can only make failures on one place (the RequestManager).
Thanks for your help, you gave me a lot of inspiration for this problem.
|
|
|
|
|
MARS (Multiple Active Result Set) can give you a quick solution in this respect (if you are using ADO.NET 2.0 and SQL Server 2005).
|
|
|
|
|
Thanks,
but i don't use SQL Server 2005, but i read the Article about MARS on MSDN, this is not exactly that, what i want, because i want the possibility to have more parallel running transactions.
But many thanks to you all for your answers, but i have now the solution (or at least the ideas for my solution)
|
|
|
|
|
Suppose I have a generic class A with a method Xyz.
public class A<t> : where T : class
{
// lots of stuff omitted...
public int Xyz()
{ // details omitted
}
}
Elsewhere I have an object reference. I want to test if the reference refers to an instance of A (don't care about what <t> is), and if it is an instance of A, invoke method Xyz and get the return value. Something like
if (ref is A)
{
int returnValue = ((A)ref).Xyz();
}
except that this code doesn't work when A is a generic type. Can this be done?
Thanks
Peter
|
|
|
|
|
the problem you have is that A does not exist, but A<T> does. So you cant cast to A .
However, seeing as method Xyz() does not rely on Generic type T at all, I would structure your code to include non-generic type A and then inherit for the generic stuff:
public class A
{
public int Xyz()
{
}
}
public class A<T> : A where T : class
{
}
now, this will work:
if (ref is A)
{
int returnValue = ((A)ref).Xyz();
}
|
|
|
|
|
Yes, however IMO that would fail if Xyz() depends on T.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
True, but the information provided did not appear to indicate that Xyz relied on T. I can only answe on info provided
|
|
|
|
|
Hi,
this generates "1":
public class A<T> where T : class {
public int Xyz() { return 1; }
}
public class CPTest_Generic : CPTest {
public override void Test(int arg) {
test2(new A<Form>());
}
public int test2(object rf) {
A<Form> aa=rf as A<Form>;
int result=0;
if (aa!=null) result=aa.Xyz();
log("result="+result);
return result;
}
}
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
You could write an interface that specifies Xyz, have A<T> implement it, then test for the interface rather than A.
|
|
|
|
|
Yes, this:
public interface Abase {
int Xyz();
}
public class A<T> : Abase where T : class {
public int Xyz() { return 1; }
}
public class CPTest_Generic : CPTest {
public override void Test(int arg) {
test2(new A<Form>());
}
public int test2(object rf) {
Abase aa=rf as Abase;
int result=0;
if (aa!=null) result=aa.Xyz();
log("result="+result);
return result;
}
}
works however it forces Xyz() to be T-agnostic, so what is generic about it?
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Make the interface generic?
public interface Abase<T>
{
T Xyz() ;
}
(Not tested.)
modified on Monday, August 10, 2009 6:57 PM
|
|
|
|
|
I agree with PIEBALDconsult, an interface is probably the cleanest way to do this:
public class A<T> : IA where T : class
{
public int Xyz()
{
return 1;
}
}
public interface IA
{
int Xyz();
}
if (a is IA)
int returnValue = (a as IA).Xyz();
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn) Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia) Why are you using VB6? Do you hate yourself? (Christian Graus)
|
|
|
|
|
Why use is and as ? Pick one.
|
|
|
|
|
Force of habit. Say a was passed as a parameter (object o) . Without the is , you would have to catch the NullReferenceException at the as if it wasn't an A<T> instance, and without the as (or some other cast/conversion), there would be no way to access the Xyz method.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn) Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia) Why are you using VB6? Do you hate yourself? (Christian Graus)
|
|
|
|
|
A<T> a = o as A<T> ;
if ( a != null ) a.Xyz() ;
or
if ( a is A<T> ) ((A<T>) o).Xyz() ;
Aw crap, how'd it get to be 01:00? I'd better get to bed.
|
|
|
|
|
Hello All ,
I was readinf the lock concept and find that there is problem with lock(this) or lock(public type).
what is the problem doing like that ?
Please explain me with an example
|
|
|
|
|
A good starting point for research is the documentation[^]. I think you would be surprised at the information available in MSDN.
|
|
|
|
|
Nah. MSDN documentation is like holiday brochures without pictures, nothing interesting there.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
Actually, the particular article I referenced while sparse does indicate the common problems and a common solution in the remarks section. Although, most MSDN is total crap.
|
|
|
|
|
I check the documentation . I did not get that what was the problem .
any way we are making lock on that object . So what matters if that is private or public?
Please help me out
|
|
|
|
|
you could as well ask why private and protected members exist at all. Why not make everything public?
it is a matter of encapsulation, separation of concern, improving reliability, etc.
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get.
Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
|
|
|
|
|
No That i not mean at all . what i got confused is anyhow i am locking that object . So untill i done with my work no body can tamper it with .
So even if i declare private or public i am holding a lock on that . So how that acces specifier will affect that .
Sorry to trouble u .. bUt a good example will clear my doubt .. my brain is not able to leav this doubt unanswered.
|
|
|
|