Я действительно не понимаю, что вы хотите, но я постараюсь решить проблему, которую я получаю.
- Хотите ли вы создавать новую папку каждый раз при загрузке новой фотографии или хотите переименовать фотографию в
[Id][FileName].jpg
? Если вы хотите последнее, вы можете изменить это
var dir = @"images/" + GetCurrentId();
var path = Path.Combine(dir, Path.GetFileName(iName));
в это
var dir = @"images";
var fileName = GetCurrentId() + Path.GetFileName(iName);
var path = Path.Combine(dir, fileName);
- Если вы хотите использовать автоинкрементный идентификатор, вы должны поместить автоинкремент в базу данных, а не извлекать последний идентификатор и увеличивать его. Однако, если ваш идентификатор не очень важен (вам просто нужен его уникальный идентификатор), вы можете использовать uuid вместо автоматического увеличения. Например, вы можете обратиться к здесь .
string id = Guid.NewGuid().ToString();
File.Copy(iName, path)
не требует одинакового имени файла iName и пути, вы можете изменить имя, и это не вызовет никаких проблем.
Если продукт является новой записью, вы можете сгенерировать uuid, использовать его для изображения, а затем использовать его для идентификатора продукта.
string id = Guid.NewGuid().ToString();
Product newProduct = new Product();
newProduct.ProductID = id;
var dir = "@images";
var path = Path.Combine(dir, id);
File.Copy(iName, path);
Если продукт является старой записью, вы можете получить идентификатор продукта и использовать этот идентификатор в качестве имени изображения.
Product existingProduct = getProduct();
string id = existingProduct.GetID();
var dir = "@images";
var path = Path.Combine(dir, id);
File.Copy(iName, path);