Asp.net - Enforcing Database Constraints In Application Code
Sep 16, 2011
I'm working on my first real asp.net web application and I'm kind of stumped on the best place and method to trap and handle database constraint violations. Suppose I have a unique constraint on a column and a user inputs something that would violate that unique constraint. Do I catch it in the business layer by making a call to the database to check of the value exists for that column or do I let it go all the way to the database and let it throw an exception and handle that in my application?
I don't like the latter answer- because it makes sense to handle as much as you can in the business layer before it reaches the database. But it's also somewhat problematic as my application is driven by procedures that implement basic CRUD operations on all tables. So in order for me to enforce uniqueness in the business layer, I need to create a procedure for every possible constraint so I can do a look up before an update or insert. That just seems tedious... and I'm duplicating business rules as they exist in both the database and the business layer, so if something changes, not only do I have to change the database, but I have to change the procedure and the application code.
So is there a right way or a good way to enforce these database constraints in application code or should I be looking at a way to catch exceptions thrown by the database and present them in a user-friendly way?
There were three similar questions in StackOverFlow but none gave an answer.. If have found why this error in occurring but don't know the fix. I am using Strongly Typed Dataset for my project which is created as a dll for DAL. I have added the Sql Server Table into this dataset using the designer and has created a DataAdapter
How do I add constraints to image resizing code? I want the image to be no larger then 165x146. The below code does not hold the constraint when image is 525x610.[code]
We have a coding standard that says all shared (static) fields and methods must be called with the class name. E.g. NameOfClass.whatever Is there a tool that we can use to check this is in fact the case? (Likewise for modules) I should have make it clearer we are using VB.NET.
I have an application half built which accesses a Access (2003)Database File. From within the application I am able to change the data in the Access File using a Data Grid. The changes to the Data File are saved and can be recalled, changed or otherwisemanipulated however, when I add too or change any of the applicationcode the Access file reverts back to it's original state losing any data or changes that has been made.
I have the a function that is declared like so: Public Sub Modify(Of SIMType As {New, DAOBase})(ByVal obj As SIMType)
I also have a class called Products which is declared like so:
Public Class Products Inherits DAOBase
So as you can see, if I were to call this function like so:
Modify(Of Products)(new Products())
This would not be an issue. The issue actually arises when I try to cast the object being past in to its real type. For example: both do not work. I get a Value of type SIMTYPE cannot be converted to IMS.Products error. Im assuming this is because I am using generics. Is there a way to adjust my function to allow for a casting operation like I am trying to do? In the end, what I need is a reference of the actual type (Products in this case) to the object.
<Extension()> _ Public Function Satisfies(Of T)(ByVal subject As T, ByVal specification As ISpecification(Of T)) As Boolean Return specification.IsSatisfiedBy(subject) End Function
This works as expected if subject is the exact class being operated on by the specification. However, if the specification is examining the super-class of T, this extension will not work unless subject is explicitly cast to the super-class. Is there a way I can avoid this? So far, the best I've been able to come up with is:
[Code]...
Since I (apparently) can't get this to work exactly as I'd like in VB.NET due to limitations in the language itself, is my second attempt the safest/most efficient way to do this?
I am starting to play with extension methods and i came across with this problem:In the next scenario i get a: "extension method has a type constraint that can never be satisfied"
Public Interface IKeyedObject(Of TKey As IEquatable(Of TKey)) ReadOnly Property InstanceKey() As TKey End Interface
I'm trying to use a DataTable to get the schema of a SQL Server DB.But, when try to detect the ForeignKeys, the constraints collection only brings the UNIQUE constraints.
Private Sub ShowConstraints(ByVal tableName As String) Dim table As DataTable = New DataTable(tableName) Using connection As SqlConnection = New SqlConnection(GetConnectionString)
I am doing a projectin VB 2008..I ave list of data being displayed in listview and it gets stored in DB..The problem is,i am unable to filter particular data based on some constraints like date,client etc.. How can i filter data based on various constraints..As i am new to VB,
I have a generic function in VB.Net. I also have two classes called A and B. Is it possible to allow the generic constraints on my function to allow the Type to be either class A or B? Class A and B do not share any base classes except for object.
I keep getting this error message (see image). What's weird is it's coming from a "typed" dataset that is bound to a DataGridView and even though I get this message, the DGV still loads with all the data. I've bound this dataset to the DGV thru the designer. Here is the line of code that is erroring out: Me.adpItemMaster.Fill(Me.JewelryDBDataSet18.tblItemMaster) I checked the table and the primaryKey for the tblItemMaster is unique for each row.
When I use the dataAdapter.fill(ds,tableName), it reports an error: "Failed to enable constraints."Yes, I changed the selectcommand.I know if I modified the selectcommand, and if it will take diffrent columns result, this error will be reported.
I'm trying to write a class that will be in charge of persisting application options. Since the options need to be persisted the values that I'm sent must be serialisable.
Initially I thought I've be able to write a method with a signature like this[code]...
I am getting headache analyzing what's causing this error message "Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints."I have 7 different sections, each sections has the same subject component, one of which is CLUB. The error will only display for one particular section but for the rest of the sections, the program work fine. All sections uses the same code that's why I am very puzzled with the error. if the code works for the rest of the section one it fails for the one particular section?I have check my table (sql2005 express) and all the records are intact.The error is pointing on da.Fill(Me.Grading_Rpt_DataSet.tblEnrol)of the code below.
When I write the following statement in VB.Net (C# is my normal language), I get an "end of statement expected" referring to the "Implements" statement. <Serializable()> _ <XmlSchemaProvider("EtgSchema")> _ Public Class SerializeableEntity(Of T As {Class, ISerializable, New}) _ Implements IXmlSerializable, ISerializable ... End Class
The C# version that I'm trying to emulate is: [Serializable] [XmlSchemaProvider("MySchema")] public class SerializableEntity<T> : IXmlSerializable, ISerializable where T : class, new() { .... }
I have datagridview1 binded to data Table1 (with binding source) . This data table1 is in relation with his child data table2.When I insert new record to table1 I want to refresh datagridview1.
If I use table adapter fill method I get error.TableAdapter1.Fill(Me.DataSet1.Table1) ' error error: Cannot clear table Table1 because ForeignKeyConstraint FK_Table1Table2 enforces constraints and there are child rows in Table2.
I am having two databases for the same application , one in windows and the other is web based.Since web based one have few functionalities I can't opt for a single database.At the same time I want to share Both databases to be updated with other's data so as to work error free with my module of appointment fixing.
I am using/creating a DataTable so the "enforceConstrains" property is not avilable for DataTable.Error message: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
Windows Form Load Event:
Private Sub Expenses_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load expensesGV.DataSource = listExpenses() expensesGV.Columns(0).Visible = False End Sub
I have a report made in Crystal Reports XI. The report is generated and exported to PDF in visual basic script using COM interface. Generally everything is running smoothly, but in one case generation breaks with error: Failed to retrieve data from the database. Details: [Database Vendor Code 9421]
Database used is MSSQL 2005 connected over ODBC to CR XI. When I am opening report with exactly the same parameters in Designer, everything works fine.It looks like it is data related, but it is hard to trace since the whole report is pretty sophisticated. Anyway I spent half a day on crawling over Dr. Google and it seems that he has no clue what might be an issue.
Imports System.Data Imports System.data.OleDb Public Class Form1 Dim con As OleDb[code].....
By this i can fetch only one row(the last row) of the access....how to modify the above code to fetch all the rows starting from the begining from the database..........
In vb.net I am using password protected database with following connection stringconnetionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:vaivaiDB.mdb;JetOLEDB:Database Password=secret;"Database access works fine on the development machine.
i need to make a database application that can write/retrieve cells/datasets from/to a database i buyed a book in there was an example of how to create a database application while debugging i had the "Object reference not set to an instance of an object." error and it highlighted this code
objDataRow = objDataSet.Tables("KlantenTable").NewRow now the problem is here i declare something later in the code i write to it objDataSet.Tables("KlantenDataTable").Rows.Add(objDataRow)
I have made a database application that uploads a database via FTP here is the code:
Code:
note this line:
Code:
ContactDB.mdf is the database in my application what would i have to insert for it to upload the database i have tried it as it is and its failing i could locate its full path on my machine that works but what happens when i want the application to go on someone elses pc?
I'm using VB 2008, and I have a dual core computer.Is it possible to make a code that sends one application or program in 1 core, and other application in the other core?