I think that the biggest terrible thing that you are doing here is 1) using magic string literals that are not defined as constants. 2) using a string when you can use an `enum` instead. public enum SaveResult { Exists, NotSaved, Success } That said and done, I really question the `catch (Exception)`. In my experience, you should only catch the exceptions that you really need to catch. If the code would throw a `NullReferenceException` for example, that should propagate upwards and tell you that there is a serious bug in the code that needs to be fixed. Some Exceptions are just not meant to be caught. Besides this, I think that what you are doing here is reasonable. However, I would also like to point out that if you are using a "real" RDMS here, such as MS SQL Server, MySQL, PostgreSQL or whatever, then you might want to make your table have a primary key - or another unique index - over two columns: Both `ShiftId` and `ShiftHour`. Technically, that's the only way to really make sure that your table will not have duplicates over these values. If only ShiftId is different, that will be fine, and if only ShiftHour is different that will be fine, but if both of them are the same then your RDMS will not under any circumstances allow you to insert a new row into the table, as it violates this constraint.