C# - Force Query Execution Without Flush/commit

Feb 16, 2010

i am using the transaction-per-request (session-in-view) pattern for an asp.net web application. I have a couple of points in the application where i want to Save an NHibernate managed entity and then do a couple of more inserts and updates using common sql. These inserts/updates depend on the ID that the NH saved entity will take.

The problem is that the generated id does not exist in the transactions' scope. If i force a flush/commit the id is persisted but if the inserts/updates fail i have to rollback but the flushed/committed entity will not. Currently I'm doing a manual insert for these cases but that is something i want to change. So, is there a way to execute the SQL statement (inside the already open transaction) after the Save() but without forcing a flush/commit?

EDIT: I'm adding a semi-pseudocode example, i got 4 wrong answers so i think people don't understand (how NHibernate works)
At the Begin request i issue a

nhsession.BeginTransaction()

then at some point i do

FooClass fc = new FooClass("value");
nhsession.Save(fc);
ITransaction trans = nhsession.Transaction;
SqlCommand sc = new SqlCommand("some insert/update query that depends on fc's id", (SqlConnection)nhsession.Connection);
sc.Parameters.Add("id", fc.Id); //NHibernate generates the id, note i'm using assigned/hi-lo so no round trip to the db takes place
transaction.Enlist(sc);
try {
sc.ExecuteNonQuery();
}
catch (SqlException ex){
transaction.RollBack();
nhsession.Close();
}

and at the end of the Request i issue a CommitTransaction() and nhsession.Close()

Now this will do absolutely nothing: the FooClass (fc) has not been flushed/commited to the database. The Save() operation that NH has done is up to that point in-memory. That means no sql command has been issued by nhibernate and that means that the SqlCommand (sc) that i fire afterwards will fail miserably as the id does not exist.

If i do a flush/commit between Save() and the SqlCommand the FooClass(fc) _cannot_be_rolled_back_ and that is a bad bad thing.Currently, for this to work i make vanila sql insert using an SqlCommand, and i want to change that. (Why? because i don't want to make vanilla inserts they are susceptible to errors due to schema/model changes, and i got the OR/M for that)

How? i want to notify NHibernate somehow to execute the SqlCommand to corresponds to the Save() insert (hell, it can do all the SqlCommands it has gathered) but without it commiting or flushing!.

Currently i'm also searching for the prepared sql statement that nhibernate produces when flushing/commiting a saved object. Maybe i can just take that string and run it in my SqlCommand that is enlisted in the Transaction.

View 6 Replies


Similar Messages:

NHibernate Saves Without Commit() Or Flush()?

May 18, 2010

I have a strange situation.An ASP.NET button click event causes an object in memory to be updated. The object was loaded from NHibernate via Refresh() during Page_Load, but at no time during the entire page life cycle is Commit() or Flush() called.At some point after the page's OnUnload step, the object and any changes made to it are automatically persisted to the database. I cannot see when or where or why this occurs.

View 2 Replies

Different Execution Time For Same Query - SQL Server?

Jan 28, 2011

I have a query:

Select a from tbl_abc where id in ( select id from tbl_xyz where mainid = 12)

When I am executing this query, it is taking 1-2 seconds to execute, but when I am using the same query in stored procedure, the below query is taking more than 5 minute:

If(Select a from tbl_abc where id in ( select id from tbl_xyz where mainid = 12))
BEGIN
-- CREATE TEMPORARY TABLE [Say: #temp1]
#temp1 => Select a from tbl_abc where id in ( select id from tbl_xyz where mainid = 12)
inserting the same value in the temp table
drop #temp1
END

what could be the reason of this? and how can I resolve this? I am running the SP from asp.net

View 3 Replies

Databases :: How To Get Query Execution Time

Sep 2, 2010

I need to find out the query execution time from the front end .Where should I insert the code for that.

I am using the bleow query:

OracleConnection con = new
OracleConnection(ConnStr);
con.Open();
OracleCommand cmd =
new
OracleCommand("Stored_Proc",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add();
....................
................
OracleDataAdapter
oda = new
OracleDataAdapter
(cmd);

View 2 Replies

Databases :: Query Execution Taking 30 To 40 Second

Mar 16, 2011

when i am executing a simple query it is takeing 47 sec .... that is only for one table.. other then that remaing table perfromance is good... Help me out... and is there chance to get good perfomance through .net coding..

View 3 Replies

SQL Server :: Flow Of Query Execution?

Jan 18, 2011

Can any one please provide link for flow of query exection in sql

For eg.
FROM, [JOIN CONDITION, JOIN TABLE ...], WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, TOP

Suppose when we write query, how that query will get execute behind. I would like to know about that.
Can you please provide ariticles or link related to this

View 4 Replies

C# - Stop SQL Query Execution From .net Code

Jan 24, 2011

I'm executing one stored procedure from the '.net' code. Since there is a lot of data, it is taking too much time to execute. Is there any way to stop this execution from the c# code?

In other words, if we execute the query from database itself, there is a option to stop its execution but in the code is it possible?

View 2 Replies

DataSource Controls :: How To Execution Of Top 3 Salaries Query

May 24, 2010

can anyone explain me how below query will execute internally ??

select sal from emp e1 where 3>(select count(*) ct from emp e2 where e1.sal < e2.sal)

View 4 Replies

C# - Delaying Linq To SQL Select Query Execution

Jun 14, 2010

I'm building an ASP.NET MVC site that uses LINQ to SQL. In my search method that has some required and some optional parameters, I want to build a LINQ query while testing for the existence of those optional parameters.

Here's what I'm currently thinking:
using(var db = new DBDataContext())
{
IQueryable<Listing> query = null;
//Handle required parameter
query = db.Listings.Where(l => l.Lat >= form.bounds.extent1.latitude && l.Lat <= form.bounds.extent2.latitude);
//Handle optional parameter
if (numStars != null)
query = query.Where(l => l.Stars == (int)numStars);
//Other parameters...
//Execute query (does this happen here?)
var result = query.ToList();
//Process query...

Will this implementation "bundle" the where clauses and then execute the bundled query? If not, how should I implement this feature?

View 1 Replies

VS 2010 - Stop Execution Of MSSQL Query

Nov 21, 2013

i have a complex MSSQL query in my ASP.NET page with rows showing in GridView control.

I want to know what is the best solution for stopping the query if it takes more than X seconds to show in GridView.

View 6 Replies

SQL Server :: Show State Of Query Execution In Webpage?

Oct 5, 2010

I have a big query that it execute in 4 minutes. (for example an important trigger)

I want to show situation of query or count of records that is affected in every 10 second in to a web page.

what should I do? (complete explain)

View 7 Replies

State Management :: Count Query Execution / Where To Store The Counted Value

Aug 25, 2010

I have a class that being used to connect with the DB. Now I want to count how many times each web request executes the queries, but I've no idea where to store the counted value. I mean, Session wont, ViewState wont work as site also have webservices. What else I can use?

View 12 Replies

SQL Reporting :: An Error Occurred During Local Report Processing Query Execution Failed

Mar 29, 2011

i am new at reporting service things when i try to create a report i got this error and idea how to fix it

An error occured during local report processing.

An error has occured during report processing.

Qery execution failed for dataset 'ds_testtablosu'

Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "MMDB"

View 4 Replies

What Is The Usage Of Flush

Aug 17, 2010

I always have problem with the conception of flush who knows exactly what it means eg:

[Code]....

View 1 Replies

How To Handle Response.flush

Jun 21, 2010

I am using Response.flush() method for download the csv file. I am create the html on page and call the Response.flush method. It is working good But when i am cancel the download and do the another operation , It genrates the error.

View 6 Replies

ADO.NET :: Query Execution / Last Suppose 1000 Mails Queued Then 1000 Times Get Mail Queued?

Feb 15, 2011

i am using sql server inbuilt mail system for sending mail.and i made SP to call dbmail sp

now my problem is when i call sp it get executed fine but in last suppose 1000 mails queued then 1000 times i get mail queued.and that my connection time out .i extend connection time out limit but i get error msg like

"Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Mail queued."

my mail get queued well proper but due to 1000 or 100000 mail queued its lost of msg make problem.

View 4 Replies

Render Output To String - Response.Flush Breaking Page Caching

Feb 3, 2010

I have some code that is used to replace certain page output with other text. The way I accomplish this is by setting the Response.Filter to a Stream, Flushing the Response, and then reading that Stream back into a string. From there I can manipulate the string and output the resulting code. You can see the basic code for this over at [URL] However, I noticed that Page Caching no longer works after the first Response.Flush call.

I put together a simple ASP.NET WebApp as an example. I have a Default.aspx with an @OutputCache set for 30 seconds. All this does is output DateTime.Now.ToLongTimeString(). I override Render. If I do a Response.Flush (even after the base.Render) the page does not get cached. This is regardless of any programmatic cacheability that I set. So it seems that Response.Flush completely undermines any page caching in use. Why is this?

extra credit: is there a way to accomplish what I want (render output to a string) that will not result in Page Cache getting bypassed?

ASPX Page:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestCacheVsFlush._Default" %>
<%@ OutputCache Duration="30" VaryByParam="none" %>
<%= DateTime.Now.ToLongTimeString() %>

Code-behind (Page is Cached):
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
Code-behind (Page is not cached):
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
Response.Flush();
}
Code-behind (Page still is not cached):
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(30));
Response.Flush();
}

View 1 Replies

Commit Transaction In SQL Server

Dec 10, 2010

table 1
[Code]....
Table 2
[Code]....
my stored procedure
[Code]....

when ever i m passing the wrong the value in second table while updating its not updating the table but the problem it is inserting the value in first table i want the whole trans should proceed if success if not rollback

View 2 Replies

C# - LINQDATASOURCE Do Not Commit To Database Straight Away?

Nov 6, 2010

I'm using a LinqDataSource with a RadGrid. When I Add a new Grid item and click insert the values are immediately saved to the database.Is there a way where they can be actually not put in the database until I give the command?

View 1 Replies

Commit And Rollback Options In Database

Apr 27, 2010

I have this page in my application that contains a couple of grids and a few text boxes. Now these grids are getting populated from a hidden field in the page. My requirement is like the main page should have an "Update All" button where as these grids have their individual Update and delete options. Now when I delete or update anything from the Grids it should do a soft update or delete function and eventually when I hit "Update All" an actual commit statement should be executed.

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
begin
GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
TextBox PhoneNo = (TextBox)row.FindControl("TextBox2");
[code]...

View 2 Replies

SQL Server :: Begintrans And Commit For Records?

Jul 23, 2010

I have 20 records in the datatable and i try to insert this records in a database, i want towrite begintransactions , and if all the records correct , i need to commit otherwise i need to rollback.how to do this?

View 2 Replies

SaveChanges() Does Not Commit Changes To The Database And Entity Framework

Nov 7, 2010

All I am trying to do is to make an update to an existing User and then save the changes to the database. I fooled around with different options and can see that I can make the change to the context during Page_Load, but it does not commit the changes to the Database.

View 5 Replies

ADO.NET :: Explaination About Commit,rollback,tranasaction. With Examples?

Aug 20, 2010

i have no idea about commit,rollback,tranasaction can any one explain with examples brefiely.

View 2 Replies

C# - Bind A Grid To An Anonymous LINQ Result, Then Commit Changes To DB?

Mar 4, 2011

I've been looking into how best to do this and wisdom would be appreciated. For read only purposes, I've been happily using LINQ and binding it to a grid. For editing purposes, I've used the LinqDataSource control, enabled the Edit/Delete operations in the process, and I have a nice editable grid bound to some or all of the table's fields.Now I have a situation where I want to edit a few fields in table A, but there are various values in linked table B that I want to display in that grid too (no editing of those). So my query looks like the below. The fields in tblDupes (cleared, notes) are what I want to edit, but I'd like to display those tblVoucher ones.

var theDupes = from d in db.tblDupes
where d.dupeGroup == Ref
select new

[code]...

A similar but different question LINQDataSource - Query Multiple Tables? sent me looking at scott Guthrie's blog entry http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx, where he handles various events to have a LinqDataSource with a custom query across tables. This still seems aimed at explicitly designed classes though, even if the class has only a subset of the fields.

So my question is: is there an easy way to allow committing of the changes made to the anonymous collection (a changes.Submit type action), or just an easy way to 'display' fields from another table while not involving them in the updating?EDIT: Thinking more, it doesn't have to be anonymous really. I'd be happy to define a class to contain the elements in that query, since it won't change often. But, those elements would be across two tables, even though only one needs updating. Not sure if that suggests entity framework would be more suitable - I get the feeling it wouldn't - I don't want the whole 'model' always grouping the fields in this way.

View 1 Replies

Active Directory/LDAP :: Commit Changes Error While Updating To The AD?

Jan 8, 2010

answer this:I ran into the following error while trying to Update the user details on the Active Directory:General access denied error

View 2 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved