DataSource Controls :: Cannot Access A Disposed Object When Handling Foreign Key Relations?
May 15, 2010
i am currently working on an asp.net mvc 2 web app using LinqToSQL. I would like to handle a scenario where a user comes form a country and for this i have set the users - countries db relationship and in my user model i have a CountryId property.
I would like to display the country name on my users display view, so i tried fetching the country name like this: User.Country.Name, but an exception occurs that i cannot access a disposed object. I understand that this is caused by the way i handle my users repository and service.
This the repository users code:
[Code]....
This is the service users code (the repository is not class level property, but a local one that gets dipsosed immediately after calling it):
[Code]....
So, how could i handle such a scenario, where i would like the Country model to be also fetched in order to use it later? Should i convert the repository model a class level proprty in order not to get disposed?
i have a problem executing an insert query. whenever i try to insert i have an exeption telling me it cant execute because a record needed in another table; where i select a value form that other table according a listbox, and then insert it into this table. here is a sample of my code:
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|emp2.mdb");
int a = 0; conn.Open(); string sqlcmd = "select id from nationality where descreption = '" + DropDownList1.Text + "'"; OleDbCommand readNatCmd = new OleDbCommand(sqlcmd, conn); OleDbDataReader readerNat = readNatCmd.ExecuteReader(); while (readerNat.Read()) { a = readerNat.GetInt32(0); } readerNat.Close(); conn.Close(); string saveEmpcmd = @"insert into employee " + "(nationality) " + "values (@nationality)"; OleDbCommand objCmd = new OleDbCommand(saveEmpcmd, conn); objCmd.Parameters.AddWithValue("@nationality", a); conn.Open(); objCmd.ExecuteNonQuery(); conn.Close();
now, the form executes with no errors, but it catches an exeption caused by the ExecuteNonQuery funtion; here it is in details:
System.Data.OleDb.OleDbException: You cannot add or change a record because a related record is required in table 'nationality'. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) at System.Data.OleDb.OleDbCommand.ExecuteNonQuery() at Default2.Button1_Click(Object sender, EventArgs e) in c:Documents and SettingsAdministratorMy DocumentsVisual Studio 2005WebSitesempDefault2.aspx.cs:line 305
when i remove the relation between the tables, the exeption isnt catched anymore, but the value stored in the employee table is 0 how can i solve this?
I am storing a custom "Organisation" object as a session variable. One of the properties of the Organisation object is "OrganisationID" (integer). I have a DataSource that requires a parameter value to run, and I want to use a SessionParameter to populate this. In a previous version, I stored the OrganisationID directly as a session variable. In that case, I could easily access it like this:
[Code]....
However, how do I now access the OrganisationID property of an "Organisation" type session variable (called "Organisation")? I have tried this, which does not seem to work: <asp:SessionParameter Name="OrganisationID" SessionField="Organisation.OrganisationID" Type="Int32" />
I have a bunch of methods like so in my DAL in VS 2010. When I run the "new" Code Analysis option i get the message - Warning CA2000 object 'comm' is not disposed along all exception paths. Call System.IDisposable.Dispose on object 'comm' before all references to it are out of scope.
I understand I could use another using statement for the SQLCommand however if prefer to do it like I have with the Try/Finally block. My understanding is the Finally block executes last and does the cleanup.
I have a couple methods to handle the saving of an image using Request.InputStream. I have two extensions that share the HttpContext. In one of my methods, I'm using a BinaryReader to read in the contents and do the processing. However, naturally, when disposing the BinaryReader, it closes off the InputStream property on Request. My SECOND method uses the same input stream to create a thumbnail.
Bascially, I need a way to keep the Request.InputStream property alive after disposing the reader in the first method. Is this possible? Here are my two methods. SaveImageStream() is called first, then GenerateThumbnail().
This might have been asked before but I did a quick search and found nothing.
Problem: I want to get the name of the object that has a value of nothing and the type of the object when the "Object reference not set to an instance of an object error" occurs. The type obviously can be Object or specific. I want this information so that I can log a better error message in the error handling module. The only real useful information currently that comes back from the Exception object on a try catch is the line number at which the error occurred which in most cases is adequate except when you have functions calling functions, all in one line.
I have a website which displays news information. It displays the titles at the default (home) page and when click it shows the full story.
I use object datasource to load the news titles.
Now, sometimes the database server lose its connection or changes to the database and it affects the whole website because error is reported at the Application level. I would like the Home page to still show but the section where the news titles usually appears will now show an error message that the database is down (Refer below my part of my code).
How can I achieve that?? I tried to do that at the page_error level but it displays nothing. I don't want to pass the error to application level, I want to handle at datasource load/binding level so that it display this error message at the news section and other home website information can still be shown.
I am trying to insert a foreign key into detailsview so that user didn't have to enter value every time. I am using the following code to do this but it is failing. I am not sure what needs to be done now.
Protected Sub LinqDataSource1_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceInsertEventArgs) Handles LinqDataSource1.Inserting LinqDataSource1.InsertParameters("Company").DefaultValue = Session("Company_new").ToString() End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim company As String = Request.QueryString("Company") Session("Company_new") = company End Sub End Class
I need to populate the foreign key coloum in the table.
i have three tables PATIENT DETAILS ptID firstName lastName address IMPLANT DETAILS impID ptID productID productSerialNo PRODUCT productID productName
I am instering data in PATIENT DETAILS and IMPLANT DETAILS table on the same page from single button click .
I have a foreign key on the table IMPLANT DETAIL (productID) which i populate through the value on the dropdownlist .
What my problem is how will i populate foreign key (ptID) in IMPLANT DETAIL table. When ptID (PATIENT DETAIL) will also be generated from the same button click at almost of the same time.
I am inserting a record and want to set the value for a foreign key but I am getting an error - I initally thought that it would insert it if it didn't exist but I must be wrong and want to confirm that I need to check all values and make a record for them if they don't exist... here's what I am trying to do - does his make sense?
var newAllPart = new Part(); newAllPart.PartNumber = partNumber; newAllPart.Manufacturer.ManufacturerName = partManufacturer; // error here if the Manufacturer doesn't exists already newAllPart.PartType.PartTypeName = partType; newAllPart.Category.CategoryName = partCategory; newAllPart.DateCreated = DateTime.Now; newAllPart.UserCreated = userCreated; newAllPart.Package.PackageName = partPackage; newAllPart.Statuse.StatusName = partStatus; localDB.Parts.InsertOnSubmit(newAllPart); localDB.SubmitChanges();
There is this error troubling me whenever i tried to do something to the ShopCart such as add to cart.
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ShopCart_Shopper". The conflict occurred in database "DIYERA", table "dbo.Shopper", column 'ShopperID'. The statement has been terminated.
I checked the database and the foreign key, ShopperID, was set correctly.
I am trying to create a stored procedure where I can insert null values in columns that have a foreign key constraint and allow nulls. The columns I am trying to insert nulls into are commentid and imageid. I have created an Insert statement in a stored procedure and I get the foreign key constraint error. Can you tell me how to allow inserting data in the other columns without having to insert anything in the commendid and the imageid?
Here is my exec of the stored procedure that is not working:
how can i retrieve the all foreign keys against a single primary key. i mean to say that if a table contain a primary key then it becomes as foreign keys in which tables.
i want to take that nam of that tables and on the base of that tables then i am to delete from all the entries. e.g: if a primary key's column entry deleted then all foreing key entries should also be deleted.
there are 988 tables in a single database. it can't be possible to go for each table to setup foreign key to ON DELETE CASCADE.
.can it have any way to delete against foreign key priority wise? mean to say that parent table contain primary key, child table contain foreign key , now there is another child table which dependent previous child table. then how can i delete all record against it?
i want to do it from programatically. i am using sql server 2005
i have completed this till to that , it retrieves all foreign keys but how to delete now on the base of priority.
I'm trying to insert a new EF object containing a reference to a related table via foreign key, and cannot get the reference stored in the new object. I have two tables in a SQL Server 2008 Database:
Component Templates PartGroups
with a Foreign Key linking them thus: ComponentTemplates:ID [0..1<->*] PartGroups:ComponentTemplateID
I have imported these tables into a .NET web application project .edmx file (using a new ADO.NET Entity Data Model), and then created a Data Service which I then reference in a Silverlight 3.0 project. The objects are available as expected in the data context called by my Silverlight app and load correctly. Now, when I try to save a reference of ComponentTemplate into a newly created PartGroup, the PartGroup object is created in the database, but the value of ComponentTemplateID in the newly created table record is NULL.
[Code]....
(Note that _ctCtrl.ComponentTemplate is a confirmed non-NULL object reference to the parent object on which PartGroup is a child)
I'm developing a website using asp.net 2.0 . I have retrieved a record from database through the query.
SqlConnection con = new SqlConnection(connectionstring); con.Open(); String SQL = "SELECT * FROM Table where attribute1 = value"; SqlCommand cmd = new SqlCommand(SQL, con); SqlDataReader reader = cmd.ExecuteReader();
Sometimes, there is no record matching this query and so null value is retrieved. My question is how to find that the null value is returned. Since If (no record found i.e NULL) certain actions needs to be done and if (records found i.e NOT NULL) ceratin different actions needs to be carried out.