, пытаясь найти решение для моей последней проблемы (https://stackoverflow.com/questions/29539767/sql-nhibernate-exceptions-with-sqlite-and-c-sharp-and-known-error-codes), я решил обернуть все исключения своими собственными ошибками. Вот мой код до сих пор:Независимая обработка данных базы данных Nhibernate
public Exception Convert(NHibernate.Exceptions.AdoExceptionContextInfo exInfo)
{
var sqle = (System.Data.SQLite.SQLiteException)exInfo.SqlException;
var errorDescription = exInfo.SqlException.Message.ToString();
if (sqle != null)
{
//Definition of error codes (for SQLite) to catch and handle
switch (sqle.ErrorCode)
{
//Most possible error in our project: case 19
case 19:
return new ConstraintViolationException(exInfo.Message,
sqle.InnerException);
case 5:
return new DbLockedException();
case 6:
return new TableLockedException();
case 8:
return new ReadOnlyDbException();
case 9:
return new InterruptException();
case 10:
return new IOException();
case 11:
return new DbCorruptException();
И я последовал за настраиваемую идею исключения из здесь: Returning a custom exception
Теперь я столкнулся с проблемой:
Как мы используем NHibernate. Мы хотим сохранить независимую базу данных кода. С кодом, который вы можете видеть, он будет работать только с SQLite.
- Кто-нибудь знает или имеет представление о том, как я могу управлять ошибками до , поймать их независимо от того, какую базу данных я буду использовать?
Если вы хотите, чтобы ваша программа не зависела от DB, ошибки кода не являются хорошей идеей, потому что каждая БД имеет свои собственные ошибки кода и собственные исключения.
Спасибо за внимание!
Спасибо за ответ! Это звучит очень хорошо, подход, который я принимал, был немного сложным. Я думаю, что это будет лучший способ. Я думал о чем-то подобном ловлю общих исключений, а затем сделал перевод, но я не думаю, что это так просто, как кажется. –