PDA

View Full Version : ارور هنگام ثبت اطلاعات از سی شارپ به دیتابیس SQL



RIG000
سه شنبه 07 آبان 1392, 15:37 عصر
'tblFactor' table saved successfully
'tblUser' table
- Unable to create relationship 'FK_tblUser_tblFactor'.
Cascading foreign key 'FK_tblUser_tblFactor' cannot be created where the referencing column 'tblUser.Id' is an identity column.
Could not create constraint. See previous errors.


چرا این ارور رو میده؟؟؟؟؟

RIG000
سه شنبه 07 آبان 1392, 15:38 عصر
البته بین جدول یوزر و جدول سفارش .... ریلیشن هست..
الان میخاستم جدول یوزر رو پر کنم که این خطا رو داد

veniz2008
سه شنبه 07 آبان 1392, 15:54 عصر
سلام.
گمان میکنم شما رابطه بین جداول user و factor رو داری برعکس ایجاد میکنی.
کلید اصلی جدول user رو باید کلید خارجی جدول factor قرار بدی یعنی باید همچین چیزی ساخته بشه : FK_tblFactor_tblUser
متن خطا هم داره همینو میگه که کلید اصلی جدول یوزر که identity هست نمیتونه بهش رجوع بشه و مقدارش تغییر پیدا کنه.
شما برای ایجاد ارتباط در حالت طراحی، وارد جدول factor بشید و از قسمت Relationship اقدام به ایجاد یک کلید خارجی کنید.
موفق باشید.

RIG000
سه شنبه 07 آبان 1392, 16:13 عصر
دقیقا شما درست میگی ...
اما باید جدول یوزر ما ID ایش PK باشه و تو جدول فاکتور FK باشه ... باید اینجوری باشه؟؟؟؟

که وقتی از جدول یوزر به سمت جدول فلکتور میکشم ... یوزر fk میشه!!!
و برعکشم نمیزاره ریلشن بخوره.

veniz2008
سه شنبه 07 آبان 1392, 16:25 عصر
دقیقا شما درست میگی ...
اما باید جدول یوزر ما ID ایش PK باشه و تو جدول فاکتور FK باشه ... باید اینجوری باشه؟؟؟؟

که وقتی از جدول یوزر به سمت جدول فلکتور میکشم ... یوزر fk میشه!!!
و برعکشم نمیزاره ریلشن بخوره.
بله بایستی بر عکس باشه دلیلش هم بسیار ساده هست :
کد مشتری در جدول فاکتور، وابسته به کد مشتری در جدول یوزر هست. به عبارت دیگه شما برای مشتری می تونید فاکتور صادر کنید که در جدول یوزر وجود خارجی داشته باشه.
معمولا برعکس که بشید درست میشه ولی من خودم همیشه از قسمت طراحی استفاده میکنم.
بر روی جدول factor کلیک راست کنید و گزینه design رو بزنید تا وارد طراحی جدول بشید.
در قسمت بالای صفحه یک گزینه به نام relationships قرار داره. اونو کلیک کنید.
در پنجره ای که باز میشه بر روی Add کلیک کنید تا یک رابطه جدید ساخته بشه. بعد از اون در جلوی عبارت Tables and columns specifical کلیک کنید تا بتونید بین دو جدول مورد نظرتون ارتباط برقرار کنید.
در پنجره ای که باز میشه در قسمت چپ، جدول اصلی (جدول یوزر) و فیلد کد مشتری رو انتخاب کنید و در قسمت راست هم بایستی جدول فاکتور شما وجود داشته باشه(جدولی که کلید خارجی داره) و فیلد کد مشتری رو هم در جدول فاکتور برای قسمت سمت راست انتخاب کنید.
موفق باشید.

RIG000
سه شنبه 07 آبان 1392, 16:34 عصر
ممنون اما اینا رو با دارپ هم انجام میدم این ارور رو میداد
THe cluomns in table tbluser do not match an existing praymery key or uniq constirant

veniz2008
سه شنبه 07 آبان 1392, 17:00 عصر
ممنون اما اینا رو با دارپ هم انجام میدم این ارور رو میداد
THe cluomns in table tbluser do not match an existing praymery key or uniq constirant
فیلد کد مشتری در جدول یوزر و فیلد کد مشتری در جدول فاکتور بایستی هم نوع باشند.
فیلدهای مزبور رو چک کنید و مطمئن بشید که مثلا یکی int و دیگری varchar نباشه.
مورد بعدی اینه که اگر در جدول مبدا (جدول یوزر) بیش از یک کلید اصلی دارید(در واقع کلید ترکیبی دارید)، در جدول مقصد (جدول فاکتور) بایستی تمامی این فیلدها هم در قسمت چپ و هم در قسمت راست انتخاب شده باشه.

RIG000
سه شنبه 07 آبان 1392, 17:27 عصر
درست شد. مرسی