Im пытается создать общий репозиторий с dapper. Однако у меня есть некоторые трудности с реализацией CRUD-операций.Общий репозиторий с dapper
Вот код из репозитория:
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
internal IDbConnection Connection
{
get
{
return new SqlConnection(ConfigurationManager.ConnectionStrings["SoundyDB"].ConnectionString);
}
}
public GenericRepository(string tableName)
{
_tableName = tableName;
}
public void Delete(TEntity entity)
{
using (IDbConnection cn = Connection)
{
cn.Open();
cn.Execute("DELETE FROM " + _tableName + " WHERE [email protected]", new { ID = entity.Id });
}
}
}
Как вы можете видеть, мое удаление-метод принимает TEntity в качестве параметра, который является класс параметром Я типа.
Звоню Delete-метод из моего UserRepository так:
public class UserRepository : GenericRepository<User>, IUserRepository
{
private readonly IConnectionFactory _connectionFactory;
public UserRepository(IConnectionFactory connectionFactory) : base("User")
{
_connectionFactory = connectionFactory;
}
public async Task<User> Delete(User model)
{
var result = await Delete(model);
return result;
}
}
Дело в том, что я не могу написать entity.Id
в моем Delete-OPRATION в моем родовом хранилище. Я получаю сообщение об ошибке. Итак, как я могу легко реализовать CRUD-операции, подобные этому?
Вот сообщение об ошибке:
TEntity does not contain a definition of "Id" and no extension method "Id" accepting a argument of type "TEntity" could be found
Если у вас есть ошибка, и вы задаете вопрос об этой ошибке, вам необходимо включить эту ошибку. Ошибка, возникающая во время выполнения в этом случае, называется «Исключение» (* это то, как ошибки проявляются в .net *). Включите 'Message',' Type', 'StackTrace' и повторите это рекурсивно через' InnerException' до конца. Используйте ссылку редактирования на свой вопрос, чтобы включить эту деталь, не включайте ее в качестве комментария.Также прочитайте [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask). – Igor
@Igor: Это не ошибка времени выполнения. Проверьте мой обновленный вопрос. – Bryan
У всех типов, доступных для использования, есть общедоступное свойство типа 'int' с именем' Id'? – Igor