PDA

View Full Version : نحوه انتقال دیتابیس identity به دیتابیس برنامه



bitcob589
چهارشنبه 15 مرداد 1393, 14:38 عصر
با سلام
مدیریت کاربران وب سایت با identity پیاده سازی می کنم دیتابیسی که توسط identity ساخته می شودبه صورت sqlexpress ساخته می شود چگونه دیتابیس identity با دیتابیس پروژه که در sqlserverمی باشد یکجا کنم (دیتابیس identity به دیتابیس پروژه که در sqlserver انتقال داده شود تا تمام برنامه یک دیتابیس داشته باشد و دیتابیس در sqlserver باشد)

چگونه می توان چنین کاری انجام داد

hadi0x7c7
چهارشنبه 15 مرداد 1393, 19:49 عصر
به نظر من یه راه حل ساده میتونه این باشه که DbSet های خودتون رو بیارید توی Context مربوط به Identity و کانکشن استرینگ Identity رو به چیز دلخواه خودتون تغییر بدین. یه راه حل دیگه هم میتونه این باشه که از جدول های Identity یه اسکریپت بگیرید(بدون Database) و اینو توی دیتابیس خودتون اعمال کنید(ولی اینجا فکر کنم به مشکل بخورید :دی) چون دوتا Context دارید.:متفکر:

bitcob589
چهارشنبه 15 مرداد 1393, 20:04 عصر
به نظر من یه راه حل ساده میتونه این باشه که DbSet های خودتون رو بیارید توی Context مربوط به Identity و کانکشن استرینگ Identity رو به چیز دلخواه خودتون تغییر بدین
اگر امکان دارد بیشتر توضیح دهید که چگونه پیاده سازی شود

hadi0x7c7
چهارشنبه 15 مرداد 1393, 20:25 عصر
.................

hadi0x7c7
چهارشنبه 15 مرداد 1393, 20:34 عصر
شما مگه با روش CodeFirst کار نمیکنید؟ اگه بله هست جوابتون، اون DbSet ها رو توی این قسمت بزارید، فکر کنم جواب بده، البته واسه این قضیه خودم هم دنبال راه حل هستم ....
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}

public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}

اگه به کد IdentityDbContext نگاه بندازید میبینید یه سری فیلد داره به صورت:
/// <summary>
/// IDbSet of Users
/// </summary>
public virtual IDbSet<TUser> Users { get; set; }

/// <summary>
/// IDbSet of Roles
/// </summary>
public virtual IDbSet<TRole> Roles { get; set; }

/// <summary>
/// If true validates that emails are unique
/// </summary>
حالا اگه ما DbSet های خودمون رو توی ApplicationDbContext بنویسیم فک نکنم مشکلی بوجود بیاد، به دلیلی ارث بری و این صحبتا، اینا در آخر با هم ادغام میشن.

hakim22
چهارشنبه 15 مرداد 1393, 23:39 عصر
شما اگر آدرس کانکشن DefaultConnection درون web.config رو عوض کنید و روی دیتابیس خودتون قرار بدید جداول مربوط به Identity درون دیتابیس شما تشکیل میشوند. بعد هم از روشی که دوستمون گفتن DbSet هارو بگذارید درون IdentityDbContext که چون از DbContext ارث بری میکنه همون کارایی رو داره. البته میشه جدا هم باشه ولی بعد دوتا بانک اطلاعاتی میشه و دیگه نمیتوانید مستقیما بین کاربران و سایر جداول Relation برقرار کنید.

اگر بخواهید که Identity رو به DbContext جاریتون اضافه کنید باید IUserManager و IUserRoles و ... رو خودتون دستی Implement کنید و این کارو کمی مشکل میکنه و باید کلی کد بنویسید.