В большинстве случаев хранилищу не нужно беспокоиться об обработке исключений. Классы, которые используют репозитории, должны справиться с этим. В вашем примере, почему вы хотите вернуть null, если произошла ошибка вставки? Разве это не менее ясно, чем просто создание исключения?
Например, допустим, мы хотим вставить запись через репозиторий, а затем распечатать новый идентификатор. Предположим, что вставка не удастся по любой причине.
var myNewItem = myRepository.Insert(myItem);
Console.WriteLine("MyItem added with ID: {0}", myNewItem.ID);
Следуя схеме в вашем вопросе, вы получите исключение NullReference
во второй строке, если Insert
завершится неудачей. Это немного странно. Более ясно видеть DbUpdateException
в первой строке. Также лучше иметь возможность рассчитывать на Insert
, всегда либо возвращая действительный экземпляр, либо выбрасывая исключение.