diff --git a/PuferFishContracts/PuferFishDataBase/Implementations/BuyerStorageContract.cs b/PuferFishContracts/PuferFishDataBase/Implementations/BuyerStorageContract.cs
new file mode 100644
index 0000000..4ada920
--- /dev/null
+++ b/PuferFishContracts/PuferFishDataBase/Implementations/BuyerStorageContract.cs
@@ -0,0 +1,157 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Npgsql;
+using PuferFishContracts.DataModels;
+using PuferFishContracts.Exceptions;
+using PuferFishContracts.StoragesContracts;
+using PuferFishDataBase.Models;
+
+namespace PuferFishDataBase.Implementations;
+
+internal class BuyerStorageContract : IBuyerStorageContract
+{
+    private readonly CatHasPawsDbContext _dbContext;
+    private readonly Mapper _mapper;
+    public BuyerStorageContract(CatHasPawsDbContext dbContext)
+    {
+        _dbContext = dbContext;
+        var config = new MapperConfiguration(cfg =>
+        {
+            cfg.CreateMap<Buyer, BuyerDataModel>();
+            cfg.CreateMap<BuyerDataModel, Buyer>();
+        });
+        _mapper = new Mapper(config);
+    }
+    public List<BuyerDataModel> GetList()
+    {
+        try
+        {
+            return [.. _dbContext.Buyers.Select(x =>
+_mapper.Map<BuyerDataModel>(x))];
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public BuyerDataModel? GetElementById(string id)
+    {
+        try
+        {
+            return _mapper.Map<BuyerDataModel>(GetBuyerById(id));
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public BuyerDataModel? GetElementByFIO(string fio)
+    {
+        try
+        {
+            return
+_mapper.Map<BuyerDataModel>(_dbContext.Buyers.FirstOrDefault(x => x.FIO == fio));
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public BuyerDataModel? GetElementByPhoneNumber(string phoneNumber)
+    {
+        try
+        {
+            return
+            _mapper.Map<BuyerDataModel>(_dbContext.Buyers.FirstOrDefault(x => x.PhoneNumber
+            == phoneNumber));
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public void AddElement(BuyerDataModel buyerDataModel)
+    {
+        try
+        {
+            _dbContext.Buyers.Add(_mapper.Map<Buyer>(buyerDataModel));
+            _dbContext.SaveChanges();
+        }
+        catch (InvalidOperationException ex) when (ex.TargetSite?.Name ==
+        "ThrowIdentityConflict")
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new ElementExistsException("Id", buyerDataModel.Id);
+        }
+        catch (DbUpdateException ex) when (ex.InnerException is
+        PostgresException { ConstraintName: "IX_Buyers_PhoneNumber" })
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new ElementExistsException("PhoneNumber",
+            buyerDataModel.PhoneNumber);
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public void UpdElement(BuyerDataModel buyerDataModel)
+    {
+        try
+        {
+            var element = GetBuyerById(buyerDataModel.Id) ?? throw new
+            ElementNotFoundException(buyerDataModel.Id);
+            _dbContext.Buyers.Update(_mapper.Map(buyerDataModel,
+            element));
+            _dbContext.SaveChanges();
+        }
+        catch (ElementNotFoundException)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw;
+        }
+        catch (DbUpdateException ex) when (ex.InnerException is
+        PostgresException { ConstraintName: "IX_Buyers_PhoneNumber" })
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new ElementExistsException("PhoneNumber",
+            buyerDataModel.PhoneNumber);
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    public void DelElement(string id)
+    {
+        try
+        {
+            var element = GetBuyerById(id) ?? throw new
+            ElementNotFoundException(id);
+            _dbContext.Buyers.Remove(element);
+            _dbContext.SaveChanges();
+        }
+        catch (ElementNotFoundException)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw;
+        }
+        catch (Exception ex)
+        {
+            _dbContext.ChangeTracker.Clear();
+            throw new StorageException(ex);
+        }
+    }
+    private Buyer? GetBuyerById(string id) =>
+    _dbContext.Buyers.FirstOrDefault(x => x.Id == id);
+}