Como percorrer a lista de objetos de tipo complexo e passar para um método que chama o procedimento SQL Stored
Como percorrer uma lista de objetos para passar o objeto a um método que insere linhas no banco de dados SQL via procedimento armazenado?
Com ajudanesta pergunta Cheguei a este ponto:
namespace NA.Controllers
{
public class NC : ApiController
{
[Route("AddNote")]
[HttpPost]
public HttpResponseMessage PostNote(List<Note> items)
{
//NoteJson deserializednote = JsonConvert.DeserializeObject<NoteJson>(item);
//Note notesdata = new Note(item);
NotesAccept.Models.INoteRepository Repository = new NotesAccept.Models.NoteDataRepository();
foreach (Note item in items)
{
item = Repository.Add(item);
}
var response = Request.CreateResponse<List<Note>>(HttpStatusCode.OK, items);
return response;
}
}
}
mas agora estou preso comoitem=
agora é uma variável de iteração, mas preciso transmiti-la para um método:
namespace NA.Models
{
class NoteDataRepository : INoteRepository
{
public void Add(Note item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
else
{
String strConnString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
SqlConnection con = new SqlConnection(strConnString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "BL_IntegrationInsertNote";
cmd.Parameters.Add("@Client", SqlDbType.VarChar).Value = item.Client.Trim();
cmd.Parameters.Add("@Case", SqlDbType.VarChar).Value = item.Case;
cmd.Parameters.Add("@Text", SqlDbType.VarChar).Value = item.Text.Trim();
cmd.Parameters.Add("@When", SqlDbType.DateTime).Value = item.Date;
cmd.Parameters.Add("@Ext", SqlDbType.Bit).Value = item.Type;
cmd.Parameters.Add("@return", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Connection = con;
try
{
con.Open();
cmd.ExecuteNonQuery();
string id = cmd.Parameters["@return"].Value.ToString();
string lblMessage = null;
lblMessage = "Record inserted successfully. ID = " + id;
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
//return item;
}
IEnumerable<Note> INoteRepository.GetAll()
{
throw new NotImplementedException("getitems");
}
}
}
Eu ainda sou novato em C #, então não tenho idéia de como fazer isso, especialmente porque a solução inteira ainda é "copiar e colar" de toda a web, e toda a web se concentra curiosamente em percorrer simples tipos. Como fazer isso com o tipo complexo?
Como observado em outra pergunta, isso é uma questão de vida e morte profissional (eu sou um dev db dev, não um guru do VS, especialmente depois de dois dias e duas noites).