ExpenseController su [HttpPost] Post() metodu - #4
Conversation
Sukūriau metodą, kuris įkelia duomenis į db. ExpenseItem objektą sukūriau pačiam metodu, bet čia tik pradžiai, pasibandymui ar veikia.
Nebuvo laiko šią savaitę visai.. tai tik dabar siunčiu :)
| private readonly ILogger<ExpenseController> _logger; | ||
|
|
||
| public ExpenseController (ILogger<ExpenseController> logger) | ||
| public IExpenseManager _expenseManager; |
There was a problem hiding this comment.
Šituos darom private, nėra prasmės public palikt.
| [HttpPost] | ||
| public void Post (ExpenseItem expenseItem) | ||
| { | ||
| _expenseManager.Insert(expenseItem); |
There was a problem hiding this comment.
Dar pridėk patikrinimus, ar atsiųsti laukai validūs. Tarkim Expenses kad būtų > 0. Expense_type_ID ir User_ID gal vėliau padarysim kad pačioj duombazės patikrintų (Uždėsim duombazės foreign keys).
| { | ||
| public DateTime ExpenseDate { get; set; } | ||
| public double Expenses { get; set; } | ||
| public int Expense_type_ID { get; set; } |
There was a problem hiding this comment.
Vengiam visur underscore varduose. Pakeisk į ExpenseTypeId ir UserID. Aišku kai kas gal ir taip rašo, bet dažniausiai tai underscore nenaudoja.
| string connStr = Configuration.GetConnectionString("DatabaseConnectionString"); | ||
|
|
||
| using var conn = new SqlConnection(connStr); | ||
| using var conn = new SqlConnection(Configuration.GetConnectionString("DatabaseConnectionString")); |
There was a problem hiding this comment.
Čia panaudok tą patį ConnectionToDB iš dependency injection
| { | ||
| public class ConnectionToDB : IConnectionToDB | ||
| { | ||
| public IConfiguration Configuration { get; } |
| string query = "USE Expenses "; | ||
| query += "INSERT INTO dbo.expenses (date, expenses, expense_type_ID, user_ID) "; | ||
| query += "VALUES (@date, @expenses, @expense_type_ID, @user_ID)"; | ||
| var insert = new SqlCommand(query, _connection.Connect()); |
There was a problem hiding this comment.
čia _connection.Connect() sukuria objektą kurį reikia dispose'int.
| { | ||
| public interface IConnectionToDB | ||
| { | ||
| IConfiguration Configuration { get; } |
There was a problem hiding this comment.
Čia nereikia configuration pridėt. Kam reikės tas pasiims configuration iš dependency injection. Palik tik Connect() interfeise.
Sukūriau metodą, kuris įkelia duomenis į db. ExpenseItem objektą sukūriau pačiam metodu, bet čia tik pradžiai, pasibandymui ar veikia.