ارتباط با API و Consume
var httpClient = _httpClientFactory.CreateClient("host"); if (User.Identity.IsAuthenticated) { var userToken = Request.Cookies["token"] ?? ""; if (!string.IsNullOrEmpty(userToken)) { //request.AddHeader("authorization", $"bearer {userToken}"); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken); } } var responseMessage = await httpClient.GetAsync("page/get/" + page).ConfigureAwait(false); var responseContent = await responseMessage.Content.ReadAsStringAsync().ConfigureAwait(false); var result = JsonConvert.DeserializeObject>(responseContent); return View(result.Result);
برای مپ شدن خودکار فیلدهای یک کلاس Include شده در EF و Automapper کافیه اسم کلاس include شده و بعد اسم پراپرتی موربوطه از اون کلاس ذکر بشه به عنوان مثال Entityهای ما User و City هستند و ما به UserDto اطلاعات مورد نیازمون رو map کردیم و حالا از City هم فیلد Name رومیخواهیم که با مپ شدن User به UserDto خودکار مپ شود ، در Entity مربوط به City فیلدی با نام Name موجود است ، پس ما در UserDto یک پراپرتی با نام CityName تعریف میکنیم و مپ شدن به صورت خودکار انجام میشود.
user -------- Id UserName ... City -------- Id Name ..... UserDto -------- Id UserName CityName
برای فهمیدن تایپ ستونهای یک View یا Table در SQL از طریق اسکریپت از کد زیر استفاده میکنیم .
SELECT COLUMN_NAME , DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '"YourViewName'
امنیت dapper و جلوگیری از SQL Injection
https://dapper-tutorial.net/knowledge-base/13653461/dapper-and-sql-injections
برای استفاده از Viewهای SQL Server در Net Core به صورت زیر عمل میکنیم .
1- ابتدا View رو در SQL بسازید .
2- ساخت یک کلاس که فیلدهای مورد نظر از View رو درونش داشته باشه.
public class ViewOperator { public string Operator { get; set; } }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity(e => e.ToView("ViewOperator").HasNoKey());
}
public Task<List<ViewOperator>> GetOperators() { return _context.Set<ViewOperator>().ToListAsync(); }
لطفا منتظر بمانید...