Я заметил, что на самом деле нет никакого смысла или причины для того, чтобы мои репозитории принимали объекты или примитивы в качестве параметров, или же методы CREATE возвращали просто int (идентификатор из БД) или полноценный объект.
Итак, мой вопрос: должны ли хранилища проходить и возвращать объекты или примитивы? Какой совет вы можете дать по этому вопросу? Можете ли вы поделиться какими-либо подводными камнями или опытом с любым из этих подходов?
Пример:
public class ProductRepository : IProductRepository
{
// Pass in the whole object to the repo method...?
public int Add(Product product)
{
// return just the productId...?
}
// Pass in the individual primitive values...?
public Product Add(string productName, decimal productPrice, string description)
{
// return the whole Product object...?
}
}
Как насчет того, нужна ли информация от нескольких объектов? Конечно, с точки зрения ООП лучше обойти объекты здесь, нет? (Я здесь дерзкий ...)
public int Add(int merchantId, Product product)
{
// database call needs merchant info...
}
public int Add(Merchant merchant, Product product)
{
var merchantId = merchant.ID;
// database call needs merchant info...
}