C# - Update Only 1 Field Of A Big Business Object Inside A Transaction (Best Approach)?
Aug 19, 2010
I am in a situation where I have to perform a transaction master detail record (Drop prev details, insert new details, Update Master status) Master Business Object has 20 fields Details Business Object has 4 fields only. Now I have to update only 1 field in master table and 4 fields in details table for insert.
If I initialize a new master object, 19 fields are being wasted for a simple update. What do I do to efficiently handle this situation? Can I make a new object and inherit only one field from my master business object?
View 2 Replies
Similar Messages:
Jun 15, 2010
I've got all of my ASP.NET requests wrapped in a Session and a Transaction that gets commited only at the very end of the request. At some point during execution of the request, I would like to insert an object and make it visible to other potential threads - i.e. split the insertion into a new transaction, commit that transaction, and move on. The reason is that the request in question hits an API that then chain hits another one of my pages (near-synchronously) to let me know that it processed, and thus double submits a transaction record, because the original request had not yet finished, and thus not committed the transaction record.
So I've tried wrapping the insertion code with a new SessionScope, TransactionScope(TransactionMode.New), combination of both, flushing everything manually, etc. However, when I call Refresh on the object I'm still getting the old object state. Here's some code sample for what I'm seeing:
Post outsidePost = Post.Find(id); // status of this post is Status.Old
using (TransactionScope transaction = new TransactionScope(TransactionMode.New))
{
Post p = Post.Find(id);
p.Status = Status.New; // new status set here
p.Update();
SessionScope.Current.Flush();
transaction.Flush();
transaction.VoteCommit();
}
outsidePost.Refresh();
// refresh doesn't get the new status, status is still Status.Old
View 1 Replies
Mar 10, 2011
I'm currently facing a performance problem with creating POCO objects from my database. I'm using Entity Framework 4 as OR-Mapper. The whole application is a prototype for now. Let's assume I want to have some business objects like classes 'Printer' or 'Scanner'. Both classes inherit from a BaseClass called Product.
The business classes exist.
I try to use a more generic database approach. I don't want to create tables for "Printer" nor "Scanner". I want to have 3 tables: One called Product, and the other Property and PropertyValue (which stores all assigned values to a specific Product). In my business layer I do create a specific object like this:
public Printer GetPrinter(int IDProduct)
{
Printer item = new Printer();
// get the product object with EF
// get all PropertyValues
// (with Reflection) foreach property in item.GetType().GetProperties
// {
// property.SetValue("specific value")
// }
return item;
}
This is how the EF model looks like: Works fine so far. For now I'm doing performance tests for retrieving multiple sets. I've created a prototype and improved it several times to increase the performance. It is still far away from being usable. I takes 919ms to create 300 objects who only contain 3 properties. The reason for choosing such DB design is to have a generic database design. Adding new properties should only be done in the business model.
Am I just being too stupid to create a performant way of retrieving xx objects or is my approach totally wrong? As far as I understand OR-Mapper, they are basically doing the same?
View 2 Replies
Feb 18, 2010
I have a DetailsView (DV) control, an ObjectDataSource (ODS) control, and a button on a page. I have 2 classes in the App_Code directory (Customer and CustomerDAO). The DAO class provides static methods for the ODS control and simply hack values in (ie...no real database selects/updates). The Customer class has 2 properties (Id and Name) and a default constructor. The page takes an ID on the querystring and determines if the DV control is in insert or edit mode. If in edit mode, it sets the SelectParameter on the ODS (id field), calls ODS.Select(), and then calls DV.DataBind(). The existing (although fake) customer is loaded and display properly when this happens. I then change the name of the Customer in the DV and click the Button to save the new data.
Everything seems to be wired up correctly as the UpdateMethod that is specified in the ODS control is called and succeeds (even in my real example with my database). The problem is that the BoundFields in the DV control have not been updated with the new values and therefore the existing values are updated in the database and my changes are lost. I have handled the OnUpdating event of the ODS and the values are still the old values. I have also handled the OnItemUpdating event of the DV control and the NewValues IOrderedDictionary still has the old values in it also. In looking at the MSDN article for the UpdateMethod, it states the following:
Parameter Merging
Parameters are added to the UpdateParameters collection from three sources:
From the data-bound control, at run time.
From the UpdateParameters element, declaratively.
From the Updating event handler, programmatically.
I am using the BoundField classes in my DV control so I would have assumed that the first bullet above would have handled the updating of values, but it doesn't appear to work with the way I am doing it. If I set the values explicitly in the OnUpdating event that is fired by the ODS control (the 3rd bullet) the right values are updated (again...even in my real database situation). It seems like my only issue is that the automatic binding that I expect from the DV control isn't working as I would expect it to. Here is the code that I have in my fake example:
[Code]....
View 7 Replies
Jan 17, 2011
I'am using enterprise library data access block in my asp.net application. I want to implement transaction from the Business logic layer, across multiple stored procs. Entlib opens a new connection for database access. Does using Transaction Scope in the following way lead to distributed transaction?
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))
{
// calling necessary DAL methods
scope.Complete();
}
Is there better methods to implement transaction from BLL?
View 1 Replies
Jun 17, 2010
Again, I am new to the ASP.NET world, and I come from a Windows Forms background. I'm working with an ObjectDataSource that retrieves a collection of business objects. With the collection, I am going to be binding it to a CheckBoxList and other various controls. The business object that I am using is an Employee.
To get all of the employees, I create an ObjectDataSource and set the "Select" method. I then set the DataSourceID of the CheckBoxList to be that of the ObjectDataSource. When I load the page for the first time, I see all of the employees. Now, the user goes through this page and selects all the employees they want to see information about (by checking the box next to the employee name). Finally, the user hits the button called "Display." Upon postback how do I get a list of those employees? I've tried the following solution, but I'm not sure if it's the best practice in obtaining all those employees again. Here's my solution...
In the CheckBoxList, I set the DataTextField to the Employee's name. I also set the CheckBoxList's DataValueField. This property is a little different. I set this to be a UNIQUE IDENTIFIER, which can distinguish this employee from other employees. Now, when the user hits the button "Display" I use my ObjectDataSource again and MANUALLY call ObjectDataSource.Select(). I cast the returned value as a List<Employee>. Finally, I iterate through all list items in the CheckBoxList...
[Code]....
If the item is selected, I parse through my list of employees that was returned from the bjectDataSource.Select(). I use the item.Value and compare it to each employee's "key." If the key is found, I know that the employee is selected. I put this employee in another list called EmployeesSelected.
Finally, I take EmployeesSelected (which is a List) and set my GridView's .DataSource and call .DataBind() on the GridView.
Is this the "best practice" of re-obtaining the Employees that are selected on my page, or am I making this too complicated?
View 1 Replies
Jan 28, 2011
This code works fine if i use this inside ssercontrol > panel and i have a checkboxes in table when no checkbox is checked its works fine .... but if i disabled and checked any of the textbox then this doesn't work .... in usercontrol why ? i didnt understand ..
<script type="text/javascript" language="javascript">
function checkboxChecked(){
var allInputs = document.getElementsByTagName("input");
for(var i=0; i<allInputs.length; i++) {
var chk = allInputs[i];
if(chk.type == "checkbox" && !chk.disabled && chk.checked) {
return true;
}
}
alert("OOps! You haven't selected all available checkboxes");
return false;
}
</script>
View 4 Replies
Oct 1, 2010
I have many controls like dropdown, radiobuttonlist, etc on my page and I put all these controls inside the update panel so that the page doesn't look to be posting back when something is selected. Now the working on the page is very smooth. But the session object isn't getting refreshed even if I postback to the server and as a result even if the users are working on the page they are being sent to the login screen after 20 mins.
Is there anyway where I could put all the controls in update panel and still refresh the session after any postback(dropdown selection)
View 4 Replies
May 30, 2010
I have a business object that looks like this:
[Code]....
What is the value of SomeId after I create an instance of my object? I was testing it with SomeId == 0 but it wasn't working. Then I tried null which gives me an error.
What is the right way to handle this? Am I to assign an initial value to my objects' properties in the object? If not, how do check if my object has any values assigned to its properties -- in particular, int values?
View 8 Replies
Jul 7, 2010
I just have a need where I have to select only selected attributes/fields of a very large business object. I ended up designing a DTO and a collection class for that DTO. Few questions.Is there any difference between a DTO and a dumb business object ? I filled the DTO inside the DAL and loaded it inside a DTO list and now returning to Business Logic layer but it seems its the same like dumb business objects to me (with only less attributes)
View 3 Replies
Jan 7, 2011
I create a database with more than 10 tables, how can I automatically generate business object class inside asp.net C# project?
I hope that one expert can give me steps for how to do that?
View 3 Replies
Feb 17, 2010
How do it do this. I have this at the moment
[Code]....
[Code]....
This takes a large INT and returns 4 strings from the BO structure HotelFacilities
If I set the private from string to AccommodationBO.HotelFacilities it is fine
If I set the public from string to AccommodationBO.HotelFacilities it moans because the Set section of the private property is wrong. But the set would be an INt.
All I actually want to do, is populate the BO Structure and passit to the user control using a property in the user control code behind. Is this possible ??
Dim jim As New GetAccommodationPricesBLL
View 1 Replies
Apr 22, 2010
I am using ASP.NET MVC 2.0 and I want to transfer my ViewModel properties to business object. I can do this manually or use AutoMapper or use new method available in ASP.NET MVC 2.0. My question is that does anyone know the name of the new method which allows to copy the properties from one object to another?
View 1 Replies
Jun 22, 2010
What exactly is the e.Row.DataItem return.. MSDN says.. returns An Object that represents the underlying data object to which the GridViewRow object is bound.
Here is my DataGrid...
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="PracticeCode" HeaderText="PracticeCode"
[Code]....
Note : There could be other ways to accomplish this, but I'm looking especially why my p1 is null... and is there any way to get the Patient Object back from GridView after binding.
View 1 Replies
Oct 26, 2010
Is it possible to bind a rdlc report to a business object (.NET 4/VS 2010)In my report I have TextBoxes called Name and Email.Say I have an object Person with properties Name and Email.Can I bind the .rdlc with an object Person at runtime?
View 1 Replies
May 29, 2010
I do not know how to create a business object for inserting data into the database.
View 2 Replies
Feb 2, 2011
i am having a transaction related problem regarding mysql.. need some advice how to proceed !!!
here is a gridview for my application and i am inserting or updating for each row.... like
[Code]....
well now what i want is if any of the row update or insert failes ... it should revert all the changes that was already made into the database ... even a single row update .. into that perticular table ... the code which i have called for payment.Update(PayDetails, 0) is :
[Code]....
can someone help me out how to proceed in this scenario ??? how do i undo each of the updates made into the table payment schedule details ...
View 1 Replies
Sep 30, 2010
I'm trying to delete a bunch of records in mysql. The record info to delete (userid, name) is stored in an arraylist. It seems to only delete the first record and gives an error ("Transaction has already been rolled back or is not pending.") afterwards. I have the transaction commit inside the loop which I think is the issue but not sure how to go further if I bring it outside of the loop. Here's the relevant bits of the code.
try
{
ArrayList alist = new ArrayList();
//alist gets populated with data like (12345,robot)(23456,car) here.
MySqlConnection conn2 = new MySqlConnection(query_connection);
conn2.Open();
MySqlCommand command2 = conn2.CreateCommand();
MySqlTransaction mytransaction;
mytransaction = conn2.BeginTransaction();
command2.Transaction = mytransaction;
for (int i = 0; i < alist.Count; i++)
{
string[] s = alist[i].ToString().Split(',');
try
{
command2.CommandText = "DELETE from users_settings WHERE UserID=" + s[0].ToString();
command2.ExecuteNonQuery();
command2.CommandText = "DELETE from users WHERE ID=" + s[0].ToString();
command2.ExecuteNonQuery();
mytransaction.Commit();
}
catch (Exception e){
mytransaction.Rollback();
}
}
}
catch(Exception e){
}
View 1 Replies
Jun 26, 2010
I am a new to ASP. Very experienced in MS Access... Logical move to ASP.
Problem:
When designing my first .aspx on PC and testing via localhost; all is well.
When move to server I get this error msg:
"The type specified in the TypeName property of ObjectDataSource 'ObjectDataSource2222' could not be found."
I have been reading for a solution for the past three days.
My reading tells me that there should be a reference somewhere in the web config file to id the business object dataset , but do not see any. No luck in surfing for a tip either.
I thought Visual Studio 2010 was a rapid app that allow one to design and test on PC and move easily to server for production. I am I expecting to much.
View 1 Replies
Feb 15, 2010
I have a profile object in session with profile information for the currently logged in user. I wand to be able to inject it into my business classes so I can do validation etc in them without having to pass it in the parameter list in every method.
I have tried something like this in my ninject module:
Profile profile = HttpContext.Current.Session["Profile"] as Profile;
Bind<Profile>().ToConstant(profile).InTransientScope();
However it blows up with null reference when I do Kernel.Get() in my aspx. The BusinessObject takes a profile via the constructor. If I hard code the profile instead of using the HttpContext then everything seems to work. Not sure if ToConstant is the way to go, I am really looking for something that will get evaluated every time a new BusinessObject is created.
UPDATE
It seems that asking for injection to happen on a page level object inline is too soon for the session collection to be available. If I move in the Kernel.Get call to Page_Load it works just fine.
View 4 Replies
Feb 17, 2010
I've created my dataset in my App_Code folder. I tested it so it works, But then when I add in my page an ObjectDataSource, it can find any object the list is empty. I looked for online some solution but I didn't find something which worked. It works when I add the code manually, but i would like to understand how come, which part I misunderstood.
[Code]....
View 6 Replies
Jun 30, 2010
I'm fairly new to .NET development so I might be missing something very simple here. I'm trying to set up a web service as a data item so that I can bind it to a control on my page. I was reading some tutorials about doing this in an earlier version which seemed very simple. All you had to do was add the web reference, create a data source and use the object type, pick the web service and enter the name of the call that would retrieve the data.
In 2008 the object data source type doesn't seem to be available anymore when creating a new item unde app_data. I get options for SQL Server, XML and XML schema. I've tried adding an existing source and picking each of the files generated for my web service reference, with no success. I suspect that I have to use one of the XML options, though at this point my web service is a simple thing that only returns some strings for prototyping purposes (I'm not the one writing the web service, just the front ends. Our other developer hasn't come up with a stub service yet). I know there must be some way to set a web service up as a business object so that you can bind it to a control like a gridview.
View 2 Replies
Aug 19, 2010
I have the following scenario,There is a master business object containing 40 fields2 separate child business objectsIf I update a child record, I have to update master's 'Last modify by' status along with 3 or more fields in masterFor this purpose, I don't want to initialize a separate Master class object (as most of the fields are unused/wasted)The 'last modify by' also gets updated if the records in master get updated themselvesCurrently I have separate business objects for master table, Child 1, Child 2 etc.
How do I control this in my business object design ? Do I break up my master object ? Say I extract last 'modify by ' into a new class, through inheritance or some other way ?Is there a way that whenever child gets updated I use a 'small' class to update Master status only and whenever the master itself gets updated I do the same.Problem is that I am having redundancy in my small class (Master class also contains 'Last Modify By ',
View 5 Replies
Feb 27, 2010
I want to call my business object class in which I have written my logic when any database status field change, what is the best way we can do, I want notification facility also.
I can do this window service. But there is any best way to acheive this like Notification and call my business object.
View 1 Replies
Apr 16, 2010
I need to generate a table from a List(Of Students). My Student class has properties for AcademicYear, TeachingSet, Surname and Forenames, is sorted in that order and also properties for ID and start date. The table should nest TeachingSets within AcademicYears and then the students within the TeachingSets, as shown in the table I've mocked up at http://www.ifslearning.ac.uk/files/student-table.jpg
Using a repeater I get
08-10 students B74394 Mzejb Bsppn
08-10 students B74395 Lbuifsjof Bvti
08-10 students C68924 Epoob Cmpblf
08-10 students D41468 Ipxbse Dbwfz
But I need to have
08-10 students
- B74394 Mzejb Bsppn
- B74395 Lbuifsjof Bvti
- C68924 Epoob Cmpblf
- D41468 Ipxbse Dbwfz
View 1 Replies