دسته بندی ها
10:57 1402/03/26

ثبت اطلاعات خالی در Sql Server از طریق انتیتی فریم ورک

مشخصات سوال کننده :
کاربر : nextlab     امتیاز کاربر : ‎−3     رتبه کاربر : 7140
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1663
1 نظر
saedbfd : لطفا از کدهای خودتون عکس قرار ندید. از طریق دکمه code snippet در ادیتور کدهاتون رو قرار بدید تا بشه کپی کرد و تست کرد کدهارو

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 02:25 1402/03/26
هوش مصنوعی

پاسخ هوش مصنوعی

برای حل مشکل ثبت رکورد خالی در SQL Server از طریق Entity Framework، می توانید اطمینان حاصل کنید که قبل از ذخیره سازی اطلاعات در پایگاه داده، کنترل های لازم برای بررسی صحت و معتبر بودن داده ها اجرا شده باشد. به خصوص بررسی کنید که متغیر `countryname` خالی یا نال نباشد. در کد WebAPI خود، بررسی کنید که اگر `countryname` خالی بود، بتوانید به درستی خطا را مدیریت کنید. به جای `if (countryname == null)`، بهتر است از `if (string.IsNullOrWhiteSpace(countryname))` استفاده کنید. این کار نیز فضاهای خالی را شناسایی می کند. بدین صورت:

    
[HttpPost("CreateCountryApi")]
public IActionResult Create([FromForm] string countryname = "")
{
    // شرط مربوط به خالی بودن و خطای داده مربوط به کشور
    if (string.IsNullOrWhiteSpace(countryname)) return BadRequest(ModelState);

    // متد مربوط به تکراری نبودن اطلاعات در پایگاه داده
    var getCity = _context.countryUW.Get(c => c.CountryName == countryname);
    if (getCity.Count() > 0)
    {
        // خطای مربوط به ثبت داده تکراری در پایگاه داده
        return StatusCode(550);
    }

    try
    {
        Country C = new Country
        {
            CountryName = countryname,
        };
        _context.countryUW.Create(C);
        _context.Save();
        return Ok(C);
    }
    catch (Exception)
    {
        // خطای مربوط به ثبت نشدن اطلاعات شهر در پایگاه داده
        return StatusCode(500);
    }
}

با اعمال این تغییر، اگر کاربر تنها بر روی دکمه ثبت کلیک کند و هیچ نام کشوری وارد نکند، دیگر یک رکورد خالی در پایگاه داده ثبت نخواهد شد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 18:33 1402/03/27

دوست عزیز بهتره فقط کدهایی رو قرار بدید که فکر میکنید مشکل دارن. نیازی نیست همه کدهای خودتون رو کپی کنید چون خیلی شلوغ میشه و افراد کمتری تمایل پیدا می کنن پاسخ بدن.

  • روی اکشن Create یک BreakPoint بذارید و مطمین بشید که countryname مقدار داره.
  • خط به خط با دکمه f10 جلو برید و مطمین بشید که در نهایت دستور context.save اجرا میشه.
  • مقدار countryname رو در کد زیر هم حتما تست کنید:
Country C = new Country
{
   CountryName = countryname,
};

ضمنا مطمین باشید که دیتابیس شما با collation فارسی یا arabic ساخته شده باشه.

به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
1 نظر
nextlab : از شما ممنونم. از این پس فقط قطعه کدهای مشکل دار رو جهت بررسی ارسال می کنم. بررسی و اطلاع میدم. تشکر

امتیاز کاربر : ‎−3   رتبه کاربر : 7140   تاریخ ثبت : 07:52 1402/03/27
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود