خاصیت EnforceConstraints دیتاستت را برابر false قرار بده. علتش هم همونه که گفته یا فیلدت مقدار null نمیگیره ، یا کلید خارجی هست و یا باید مقدارش uniqe باشه
dataSet.EnforceConstraints=false;
حالا شما میگی که وقتی اجراش می کنی مشکل پیش نمیاد ولی توی برنامه این خطا را میده. احتمالا به خاطر relation باشه که سه حالت داره و دیتاست شما روی حالت یک یا دو باشه:
both relation and foreign key constraint
Foreign key constraint Only
Relation Only
1. هم ارتباط هست و هم تضمین می کنه که اگر کلید اصلی تغییر کرد یکپارچگی داده ها از بین نره(رفتارش را شما تعیین می کنی که تغییرات را اعمال بکنه یا نه)
2.ارتباط نیست و فقط هماهنگی کلید اصلی با کلید خارجی هست
3. ارتباط هست. اگر Relation شما روی حالت سوم باشه این خطا رو نخواهی داشت. ولی اگر کلید اصلی شما تغییر بکنه، تغییری در کلید خارجی شما داده نمیشه و یکپارچگی داده هات از بین میره و خطای دیتابیست را باید جمع و جور کنی!
اگر فایل دیتاست به برنامه ات اضافه می کنی می تونی از همون قسمت این تنظیمات را عوض کنی وگرنه با کدنویسی. اگر هم حوصله اش را نداری و مطمئن هستی که داده هات درست ثبت می شه (با حفظ یکپارچگی) از همون روش بالا استفاده کن.
این لینک هم راجع به این سه حالت هست:
Introduction to DataRelation Object
موفق باشی!