should take care of ?
model + cons
public class Blog
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Content { get; set; }
public string Slug { get; set; }
public string Authors { get; set; }
public DateTime DateAdded { get; set; }
public bool IsActive { get; set; }
public Blog(SqlDataReader reader)
{
Id = (int)reader["Id"];
Title = reader["Title"].ToString();
Description = reader["Description"].ToString();
// Populate other properties if needed...
}
}
and then in repository
public async Task<IEnumerable<Blog>> GetAllBlogs()
{
List<Blog> blogs = new();
using (SqlConnection connection = new(_configManager.GetConnString()))
{
await connection.OpenAsync();
string query = "SELECT * FROM Blogs where IsActive = 1";
using SqlCommand command = new(query, connection);
using SqlDataReader reader = await command.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
Blog blog = new(reader);
blogs.Add(blog);
}
}
return blogs;
}
and then finally in controller
[HttpGet("api/blogs/getall")]
public async Task<IActionResult> GetAllBlogs()
{
try
{
var blogs = await _blogRepository.GetAllBlogs();
if (blogs != null)
{
return Ok(blogs);
}
else
{
return NotFound();
}
}
catch (Exception ex)
{
_logger.LogError("exception:{message}", ex.Message);
return StatusCode(500, "Internal Server Error");
}
}
model is model nothing else so you should handle other thing in other classes. this is the first part of SOLID Programming. every class has one job. if you want other job create another class for that.
i constructed a reader pattern so that I can reuse it in transactions
you can create a extension for that.
oks, looking into it , that would be nice to have
Обсуждают сегодня