ورود

View Full Version : افزودن ستون UniqueId در جدول AspNetUsers در Identity2



mmbguide
جمعه 03 اردیبهشت 1400, 14:52 عصر
سلام





موضوع: تمام اطلاعاتی که کاربر در جداول بانک اطلاعاتی ثبت می کند باید متعلق به خودش باشد و می خواهم این کار با ارتباط کلید اصلی از جدول AspNetUsers با جدول مورد نظر باشه.





روشی که پیاده کردم: من در کلاس ApplicationUser یک ستون با نام UniqueId از نوع Int اضافه کردم که Identity اون Yes و Unique هستش (در بانک SQL) و هر کاربر جدیدی که به جدول AspNetUsers اضافه میشه یک مقدار عددی براش در نظر میگیره. این کار را برای سهولت ارتباط باسایر جداول انجام دادم تا از کد GUID که کلید اصلی هستش در سایر جداول استفاده نکنم.


حالا سوالم این هستش که با توجه به اینکه من یک DataLayer در یک پروژه جداگانه دارم که بصورت یک اسمبلی به برنامه وب خودم اون را اضافه کردم، چطور میتونم در طراحی به روش CodeFirst ارتباط یک به چند برقرار کنم (ِDataLayer در یک پروژه و کلاس های Identity در پروژه وب ایجاد شده)؟ البته زمانی که کاربر اطلاعاتی را ثبت می کند می تونم به مقدار ستون UniqueId بعد از Authenticate شدن کاربر دسترسی داشته باشم و میتونم به عنوان یک مقدار به بانک ارسال کنم (که بعدها با شماره UniqueId کاربر اطلاعات را واکشی کنم). ولی هیچ Relationی بین جداول برنامه با جدول AspNetUsers وجود نداره و تنها میتونم مقدار UniqueID را در سایر جداول ذخیره کنم.





سوال: آیا امکان ایجاد ارتباط وجود داره؟ اگر وجود نداره و یا خیلی پیچیدگی داره آیا روشی که اجرا کردم قابل اعتماد هست؟


ممنون میشم اگر دوستان راه حلی برای این موضوع دارند ارائه کنند. تشکر

مهدی کرامتی
چهارشنبه 22 اردیبهشت 1400, 22:09 عصر
اگر نیاز به دستکاری های عمقی در ساختار جدول های مرتبط با Identity دارید از روشی که در پکیج آموزش ASP.NET MVC - سطح 3: آموزش کامل ASP.NET Identity و سیستم کنترل دسترسی کامل (https://barnamenevis.net/Home/Course/14?%D9%BE%DA%A9%DB%8C%D8%AC-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-ASP.NET-MVC---%D8%B3%D8%B7%D8%AD-3:-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%A7%D9%85%D9%84-ASP.NET-Identity-%D9%88-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%DA%A9%D8%A7%D9%85%D9%84) انجام دادم استفاده کنید. با استفاده از اون روش، هم کنترل کاملی رو ساختار جداول برای ارتباط برقرار کردن دارید، هم اینکه می توانید به صورت Extension Method هایی که برای دسترسی به اطلاعات Identity می نویسید (چند نمونه از متدهای فوق در همون آموزش هست) به هر گونه اطلاعاتی که نیاز دارید دسترسی داشته باشید.