Я строю API для основных операций CRUD на таблице базы данных. Я использую C # в проекте ASP.NET Web API, и мои сервисные классы живут в отдельной библиотеке классов. Dapper и Dapper.SimpleCRUD используются для операций ORM.
Когда я жестко кодирую guid в базу данных, используя DEFAULT NEWID()
, мои методы создания работают нормально. Но для лучшей практики я хочу создать новый guid в классе контроллера и затем отправить его в БД. Когда я делаю это, это терпит неудачу.
В контроллере:
var newParty = new Party()
{
Id = Guid.NewGuid(), //this is when I started getting the cast error
Name = party.Name,
CreatedDate = DateTime.Now
};
В хранилище:
public int? Create(Party obj)
{
using (var connection = new SqlConnection(_connectionString))
{
connection.Open();
var result = connection.Insert(obj);
return result;
}
}
Я получаю "Unable to cast object of type 'System.Guid' to type 'System.IConvertible'."
ответ.
Вот трассировка стека:
at System.Convert.ToInt64(Object value)\r\n at Dapper.SimpleCRUD.Insert[TKey](IDbConnection connection, Object entityToInsert, IDbTransaction transaction, Nullable`1 commandTimeout) in C:\\Users\\ecoffman\\Documents\\GitHub\\Dapper.SimpleCRUD\\Dapper.SimpleCRUD\\SimpleCRUD.cs:line 364\r\n at KC.QMS.CrudRepository`1.Create(T obj) in D:\\Isoright\\src\\WebApp\\KC.QMS\\CrudRepository.cs:line 86\r\n at KC.QMS.Services.InterestedPartyService.CreateInterestedParty(InterestedParty interestedParty) in D:\\Isoright\\src\\WebApp\\KC.QMS\\Services\\InterestedPartyService.cs:line 27\r\n at IsoRight.Api.Controllers.InterestedPartyController.CreateInterestedParty(InterestedParty interestedParty) in D:\\Isoright\\src\\Api\\IsoRight.Api\\Controllers\\InterestedPartyController.cs:line 73