# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Core >  تغییر نام جداول  AspNetUsers و سایر جداول مربوط به کاربر

## reza_devel0per

با سلام
من پروژه ای رو در ASP MVC طراحی و لانچ کرده بودم و الان به دلایلی باید به ASP Core ارتقاعش بدم؛ ولی با توجه به فعال بودن سایت نمیتونم جداول رو درون دیتابیس تغییر بدم.
مشکلی که دارم جداولی مثل AspNetUsers، AspNetRoles و ... هستش.
چون توی دیتابیس قبلیم اسم جداولم چیز دیگه ای مثل : Tb_User ، Tb_Role  و.... تعریف شده.
علاوه بر این فیلدها هم متفاوته و خیلی از فیلدها یا نیست یا اگر هست با نام دیگه ای تعریف شده.

الان موقع اجرای احراز هویت با خطای زیر مواجه میشم:
Cannot use table 'Tb_User' for entity type 'Tb_User' since it is being  used for entity type 'IdentityUser' and there is no relationship between  their primary keys.

حتی در OnModelCreating کد زیر رو تعریف کردم ولی باز با همون خطا مواجه میشه و تاثیری نداره:
modelBuilder.Entity<IdentityUser>().ToTable("Tb_Us  er").Property(p => p.Id).HasColumnName("user_id");

ممنون میشم راهنمایی بفرمایید چطور می تونم این جداول رو به صورت سفارشی تعریف کنم.

----------


## baha_ks

سلام، یه جستجو درباره Claim انجام بدید

----------


## aminaltavista

> با سلام
> من پروژه ای رو در ASP MVC طراحی و لانچ کرده بودم و الان به دلایلی باید به ASP Core ارتقاعش بدم؛ ولی با توجه به فعال بودن سایت نمیتونم جداول رو درون دیتابیس تغییر بدم.
> مشکلی که دارم جداولی مثل AspNetUsers، AspNetRoles و ... هستش.
> چون توی دیتابیس قبلیم اسم جداولم چیز دیگه ای مثل : Tb_User ، Tb_Role  و.... تعریف شده.
> علاوه بر این فیلدها هم متفاوته و خیلی از فیلدها یا نیست یا اگر هست با نام دیگه ای تعریف شده.
> 
> الان موقع اجرای احراز هویت با خطای زیر مواجه میشم:
> Cannot use table 'Tb_User' for entity type 'Tb_User' since it is being  used for entity type 'IdentityUser' and there is no relationship between  their primary keys.
> 
> ...


سلام عزیز چرا خودت رو اذیت میکنی هیچ وقت زورت رو نده التماس! 
 برا این جداول دوکار بدون درد سر میتونی بکنی :
اولیش اینه که فیلدهای مورد نیاز خودت رو به جدولی که میخوای append کنی (قاعدش هم همینه چون نمیشه اسکلت رو به هم زد یه چیز فیکس هستن )مثلا این فیلد رو به جدول ApplicationUser که از IdentityUser ارث میبره اضافه کنی
[StringLength(10)]
        public string NationalCode { get; set; }
دومیش هم اینه که جداول جدید رو با نام جدید خود بنویسی مثلا برا جداول کاربران به این صورت
protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<ApplicationUser>().ToTable("Us  er");
        }
*پس اول دیتابیس رو تو Identity بساز بعدش .*
خیلی از این فیلد ها درسته نام متفاوتی دارن اما یه قاعده رو دارن دقت کن به صورت ستون به ستون برا یک بار  با T-Sql داده های خودت رو انتقال بدی از دیتابیس قدیمی به دیتابیس جدید.
INSERT INTO Users (UserName,Name)
SELECT UserName,Name FROM DataBase1.dbo.AspNetUser

----------

