PDA

View Full Version : نحوه ی اضافه کردن Identity به لایه های پروژه



HOSSEINONLINE7
شنبه 15 شهریور 1393, 11:31 صبح
سلام من دیتابیس پروژه ام را با EFCode First از قبل آماده کردم و میخوام Identity 2 را بهش اضافه کنم که سایر جداولم را با Navigation Property به جدول Users و Role در Identity متصل کنم .

پروژه ی من شامل Class Library های DomainClasses , DataLayers هست .

برای دیتابیس خودم یک Dbcontext دارم که Dbset های کلاسها تعریف شده .

1. حالا من Identity را چطور اضافه کنم ؟ کدوم لایه ؟

2. اگر بخوام فقط از Dbcontext خود Identity استفاده کنم چطور Dbset کلاسهام را بهش اضافه کنم ؟

3. برای جداول Identity چطور میتونم Navigation Property تعریف کنم تا به جداول خودم متصل بشن ؟

mze666
شنبه 15 شهریور 1393, 12:05 عصر
سلام.
داخل پروژه DataLayer تون پکیج Microsoft.ASP.NET.Identity.EntityFramework رو هم نصب کنید.
کلاس یوزرتون رو بسازید و از IdentityUser مشتقش کنید و فیلدهایی رو که میخواید رو اضافه کنید بهش.
کلاس DbContext تون هم از IdentityDbContext مشتق کنید (جنریک هستش البته یعنی IdentityDbContext<User> مثلاً)
IdentityUser به صورت پیش فرض از Guid برای Id استفاده میکنه که این ممکنه طراحی تون رو دچار مشکل کنه ولی شما میتونید از IdentityUser<long, UserLogin, UserRole, UserClaim> استفاده کنید تا Id رو مثلاً long در نظر بگیره. در کل یک مقدار ریزه کاری زیاد داره.

HOSSEINONLINE7
شنبه 15 شهریور 1393, 19:44 عصر
سلام.
داخل پروژه DataLayer تون پکیج Microsoft.ASP.NET.Identity.EntityFramework رو هم نصب کنید.
کلاس یوزرتون رو بسازید و از IdentityUser مشتقش کنید و فیلدهایی رو که میخواید رو اضافه کنید بهش.
کلاس DbContext تون هم از IdentityDbContext مشتق کنید (جنریک هستش البته یعنی IdentityDbContext<User> مثلاً)
IdentityUser به صورت پیش فرض از Guid برای Id استفاده میکنه که این ممکنه طراحی تون رو دچار مشکل کنه ولی شما میتونید از IdentityUser<long, UserLogin, UserRole, UserClaim> استفاده کنید تا Id رو مثلاً long در نظر بگیره. در کل یک مقدار ریزه کاری زیاد داره.


الان فقط مشکلی که هست وقتی پروژه را اجرا میکنم دیتابیس با جداول پروژه ی خودم ساخته میشه . وقتی میخوام کاربر Register کنم خطا میده :

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

و برعکس اگر اول برم کاربر ثبت نام کنم جداول Identity ایجاد میشه ولی وقتی میرم روی پروژه ی خودم تا جداول خودم ساخته بشه همین خطا را برای اونا میده .

sunn789
شنبه 15 شهریور 1393, 20:02 عصر
اگر از دو DbContext استفاده میکنی باید با استفاده از migration هر دو رو Update کنی

HOSSEINONLINE7
شنبه 15 شهریور 1393, 20:21 عصر
اگر از دو DbContext استفاده میکنی باید با استفاده از migration هر دو رو Update کنی

همونطور که mze666 گفتن من dbContext خودم را به این شکل
public class DbContext:IdentityDbContext<IdentityUser>
{
.
.
.
}

ارث بری کردم .

Identity Config هم به این شکل

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
.
.
.
}


تعریف شده . خواستم سناریو این را به Migration تغییر بدم که هرجور نوشتم خطا داد ...!

Dbcontext خودم با Migration تعریف کردم ولی این یکی نمیشه .

sunn789
شنبه 15 شهریور 1393, 20:55 عصر
این رو نمیدونم خود من عمومآ از روشهای عمومی MVC استفاده میکنم و ماند شما حرفه ای نیستم البته فکر کنم نظام فکری Asp.net بر کار شما با MVC تاثیر گذاشته و من این نوع رشته و سبک رو در ASP.Net میدیدم اما خود من از سیلورایت کوچ کردم به MVC و از روشهای شما چیزی نمیدونم فقط به این نتیجه رسیدم روشها ی خودMCv بسیار راحت تر از روشهای Asp.net هست ، و توی مباحث تجاری بسیار کار امد تر و سریع تر .من عموماً از DBContext خود Mvc استفاده میکنم و Identity که خودش داره رو با استفاده از استانداردهای خودش گسترش میدم و بانکهای اطلاعاتی خودم نیز در MVC 5 به صورت اتوماتیم اضافه میشه

HOSSEINONLINE7
شنبه 15 شهریور 1393, 22:32 عصر
این رو نمیدونم خود من عمومآ از روشهای عمومی MVC استفاده میکنم و ماند شما حرفه ای نیستم البته فکر کنم نظام فکری Asp.net بر کار شما با MVC تاثیر گذاشته و من این نوع رشته و سبک رو در ASP.Net میدیدم اما خود من از سیلورایت کوچ کردم به MVC و از روشهای شما چیزی نمیدونم فقط به این نتیجه رسیدم روشها ی خودMCv بسیار راحت تر از روشهای Asp.net هست ، و توی مباحث تجاری بسیار کار امد تر و سریع تر .من عموماً از DBContext خود Mvc استفاده میکنم و Identity که خودش داره رو با استفاده از استانداردهای خودش گسترش میدم و بانکهای اطلاعاتی خودم نیز در MVC 5 به صورت اتوماتیم اضافه میشه

بصورت پیشرفته با asp.net webform کار نکردم که بخوام اونجا وارد این مباحث بشم و خوشبختانه سریعا وارد mvc شدم و وقتم را اونجا تلف نکردم .
فقط سعی میکنم روشهایی که افراد با تجربه و حرفه ایی در پروژه هاشون استفاده میکنن را یادبگیرم و بکار ببرم .

دوستان لطفا راهنمایی کنید ...

mze666
شنبه 15 شهریور 1393, 22:36 عصر
من به همچین مشکلی تا حالا نخوردم. اگر دیتای واقعی ندارید یه بار دیتابیس رو Drop کنید و بزارید دوباره از اول ساخته بشه. DropCreateDatabaseAlways

HOSSEINONLINE7
شنبه 15 شهریور 1393, 23:27 عصر
من به همچین مشکلی تا حالا نخوردم. اگر دیتای واقعی ندارید یه بار دیتابیس رو Drop کنید و بزارید دوباره از اول ساخته بشه. DropCreateDatabaseAlways

دیتا واقعی نیست و من خودم دیتابیس را دستی پاک کردم .

کدهام را میزارم ببینید کجا اشتباه کردم :

این DataContext در DataLayer :

namespace DataLayers.Context
{

public class DbContext:IdentityDbContext<IdentityUser>
{
static DbContext()
{

System.Data.Entity.Database.SetInitializer
(new MigrateDatabaseToLatestVersion<DbContext, Migrations.Configuration>());

}

public DbContext()
: base("MVCWebUnitdb")
{

}


public DbSet<Post> Post { get; set; }
public DbSet<Categories> Categorie { get; set; }
public DbSet<Comment> Comment { get; set; }
public DbSet<Message> Message { get; set; }
public DbSet<MessageAnsware> MessageAnsware { get; set; }
public DbSet<UserMetaData> UserMetaData { get; set; }



توی Domain Classes یک کلاس برای تعریف Navigation Property ساختم تا جدول User در Identity به جدول Post متصل بشه :

namespace DomainClasses.IdentityModel
{
public class AspNetUsers : IdentityUser
{
public virtual ICollection<Post> Post { get; set; }
public virtual ICollection<Post> LikedPosts { get; set; }
}
}

جای دیگه هم تغییری ندادم .

این قسمت در کلاس Identity Config فولدر App_Start به این شکل تعریف شده :

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context) {
InitializeIdentityForEF(context);
base.Seed(context);
}

نیازی نیست تبدیل به Migration بشه ؟ (البته این کار را هم کردم ولی ارور میده و نمیزاره Migration باشه )

sunn789
یک شنبه 16 شهریور 1393, 00:22 صبح
ببخشید راستش اصطلاحات شما منو به این اشتباه انداخت ، بگذارید پای بی سواد ی ما

mze666
یک شنبه 16 شهریور 1393, 00:59 صبح
یک بار از همین DropCreateDatabaseAlways استفاده کنید به جایDropCreateDatabaseIfModelChanges .

hakim22
یک شنبه 16 شهریور 1393, 09:29 صبح
به نظر من ساده تر هست که شما یک پروژه ی خام MVC5 رو ایجاد کنید (در حالی که در وضعیت Individual User) تنظیم شده و بعد کدهایی رو که میسازه رو به پروژه اضافه کنید.

برای ادامه هم به این لینک (http://barnamenevis.org/showthread.php?463981-Simple-member-ship%D8%8C-Custom-Member-ship%D8%8C-Identity-2-0-%DA%A9%D8%AF%D8%A7%D9%85-%DB%8C%DA%A9%D8%9F%D8%9F%D8%9F&highlight=Identity) مراجعه کنید.

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 09:30 صبح
یک بار از همین DropCreateDatabaseAlways استفاده کنید به جایDropCreateDatabaseIfModelChanges .

خوب اینطوری ارور نمیده ولی هر بار دیتابیس را پاک میکنه و باعث میشه اطلاعاتش هم از بین بره

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 09:47 صبح
به نظر من ساده تر هست که شما یک پروژه ی خام MVC5 رو ایجاد کنید (در حالی که در وضعیت Individual User) تنظیم شده و بعد کدهایی رو که میسازه رو به پروژه اضافه کنید.

برای ادامه هم به این لینک (http://barnamenevis.org/showthread.php?463981-Simple-member-ship%D8%8C-Custom-Member-ship%D8%8C-Identity-2-0-%DA%A9%D8%AF%D8%A7%D9%85-%DB%8C%DA%A9%D8%9F%D8%9F%D8%9F&highlight=Identity) مراجعه کنید.

من در در حاظر یک پروژه ی عجله ایی باید انجام بدم و هنوز وقت نکردم سراغ MVC5 برم . در کدنویسی که با 4 فرقی نداره ؟

ظاهرا لایه بندی با Class Library برام دردسر ساز شده و یکم کار را پیچیده کرده . فکر کنم باید همینطوری بدون استفاده از اون بنویسم .

hakim22
یک شنبه 16 شهریور 1393, 10:59 صبح
وقتی دو DbContext در پروژه داشته باشید کار با Migration کمی پیچیده میشه . حتما باید اسم پروژه و اسم DbContext را در Add-Migration بنویسید. نیازی به Initializer ندارید. با Migration کار رو جلو ببرید.

اگر خطایی میده در اینجا درج کنید تا پاسخ داده بشه.

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 12:19 عصر
وقتی دو DbContext در پروژه داشته باشید کار با Migration کمی پیچیده میشه . حتما باید اسم پروژه و اسم DbContext را در Add-Migration بنویسید. نیازی به Initializer ندارید. با Migration کار رو جلو ببرید.

اگر خطایی میده در اینجا درج کنید تا پاسخ داده بشه.

من برای ApplicationUser یک Migration ساختم . حالا میخوام Migration را برای DbContext خود Identity که در کلاس Identity Context قرار داره فعال کنم .

باید کلاس زیر سناریوش تغییر کنه به Migration

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context) {
InitializeIdentityForEF(context);
base.Seed(context);
}

ولی نمیشه . چطور این کار را بکنم ؟


ببینید جداول مربوط به Identity و جداول مربوط به پروژه ی خودم همگی در یک دیتابیس ساخته میشن . وقتی پروژه را اجرا میکنم و کاربر ثبت نام میکنم از طریق ApplicationDbContext خود Identity 2 جداول مربوطه ساخته میشه . حالا وقتی میام روی View های خودم باید جداول مربوط به پروژه ی خودم از طریق Dbcontext خودم ساخته بشه که ارور میده .

در واقع این 2 Dbcontext با هم تداخل دارن . اگر دیتابیس از قبل موجود باشه و جدول توش باشه یکی از Dbcontext ها خطا میده .

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 12:33 عصر
وقتی دو DbContext در پروژه داشته باشید کار با Migration کمی پیچیده میشه . حتما باید اسم پروژه و اسم DbContext را در Add-Migration بنویسید. نیازی به Initializer ندارید. با Migration کار رو جلو ببرید.

اگر خطایی میده در اینجا درج کنید تا پاسخ داده بشه.

من برای ApplicationUser یک Migration ساختم . حالا میخوام Migration را برای DbContext خود Identity که در کلاس Identity Config قرار داره فعال کنم .

باید کلاس زیر سناریوش تغییر کنه به Migration

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context) {
InitializeIdentityForEF(context);
base.Seed(context);
}

ولی نمیشه . چطور این کار را بکنم ؟


ببینید جداول مربوط به Identity و جداول مربوط به پروژه ی خودم همگی در یک دیتابیس ساخته میشن . وقتی پروژه را اجرا میکنم و کاربر ثبت نام میکنم از طریق ApplicationDbContext خود Identity 2 جداول مربوطه ساخته میشه . حالا وقتی میام روی View های خودم باید جداول مربوط به پروژه ی خودم از طریق Dbcontext خودم ساخته بشه که ارور میده .

در واقع این 2 Dbcontext با هم تداخل دارن . اگر دیتابیس از قبل موجود باشه و جدول توش باشه یکی از Dbcontext ها خطا میده .

Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only be checked for databases created using Code First or Code First Migrations.

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 16:56 عصر
بالاخره تونستم ApplicationDbInitializer را Migration کنم .

باید در Identity Models کلاس ApplicationDbContext انجام بشه :
http://stackoverflow.com/questions/24830367/seeding-identity-2-0-database

public ApplicationDbContext()
: base("MVCWebUnitdb", throwIfV1Schema: false)
{
Database.SetInitializer<ApplicationDbContext>(new MigrateDatabaseToLatestVersion<ApplicationDbContext, MVCIdentityTest.Migrations.Configuration>());
}



فقط الان یک مشکلی که هست میخوام چدول User ها را به جداول دیگه از طریق Navigation Property متصل کنم .
اومدم یک کلاسی ساختم و به صورت زیر پروپرتی ها را تعریف کردم :
public class AspNetUsers : IdentityUser
{

public virtual ICollection<Post> Post { get; set; }
public virtual ICollection<Post> LikedPosts { get; set; }
}

در کلاس Post هم به این شکل تعریف کردم :

public virtual AspNetUsers Users { get; set; }
public virtual ICollection<AspNetUsers> LikedUsers { get; set; }

اینم Fluent Api :
HasMany(x => x.LikedUsers).WithMany(x => x.LikedPosts).Map(x =>
{
x.ToTable("LikeUserPost");
x.MapLeftKey("PostId");
x.MapRightKey("UserId");
});


HasRequired(x => x.Users).WithMany(x => x.Post);


ولی خطا میده :

One or more validation errors were detected during model generation:

DataLayers.Context.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
DataLayers.Context.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.

HOSSEINONLINE7
یک شنبه 16 شهریور 1393, 20:17 عصر
اساتید و بزرگواران خواهشا یک کمکی برسونید چند روزه پوستم کنده شد و این درست نشد .

شما وقتی یک پروژه دارید که با EF Code First دیتابیس را طراحی کردید و بصورت Class Library دارید . چطور Asp.Net Identity را در قالب یک کلاس Library به پروژه اضافه میکنید ؟

من هرکاری میکنم هر 2 DataContext ها با هم تداخل داره .

چطور ِDataContext ها را مدیریت میکنید ؟

خواهشا یک راهنمایی کنید یا یک نمونه کد و سورسی چیزی بهم بدید تا متوجه بشم . تمام سایتهای خارجی را زیرو رو کردم هرچیزی گفته بودن انجام دادم ولی بازم درست کار نمیکنه .

mze666
دوشنبه 17 شهریور 1393, 11:25 صبح
من هرکاری میکنم هر 2 DataContext ها با هم تداخل داره .

چطور ِDataContext ها را مدیریت میکنید ؟

شما چه اصراری دارید دوتا DbContext داشته باشید؟ چرا از همون یک DbContext ای که از IdentityDbContext مشتق شده استفاده نکنید؟

sunn789
دوشنبه 17 شهریور 1393, 11:37 صبح
سلام دوست عزیز من همون اول خدمتتون عرض کردم یکی از دوستان هم درمیانه همین پست تکرار کرده است کار شما باید از ابتدا و با اصول MVC پیاده سازی شه برای همین توی یه چرخه افتادید .
همینطور که دوستمون گفتند

1- یک پروژه MVc ایجاد کنید و
2- برای استفاده کامل از Identity مثال Identity رو روی پروژه نصب کنید
3- نام کاربری و کلمه عبور پیشفرض رو تغییر دهید ،
4 - نزدیک به 42 Identity Sample رو باید در چروژه به نام پروژه تغییر دهید .
در صورتی که میخواهید به قسمت ثبت نام ایتمی اضافه کنید فبل از اجرا پروژه در IdentityModels.cs میتوانید اینها رو اضافه کنید
public class User : IdentityUser
{
[Display(Name="نام")]
public string FName { get; set; }
[Display(Name = "نام خانوادگی")]
public string Lname { get; set; }
[Display(Name = "نام پدر")]
public string FatherName { get; set; }
[Display(Name = "کد ملی")]
public string NationalCode { get; set; }
و پروژه رو اجرا کنید
، این همه هم اذیت نمیشوید

HOSSEINONLINE7
دوشنبه 17 شهریور 1393, 14:24 عصر
شما چه اصراری دارید دوتا DbContext داشته باشید؟ چرا از همون یک DbContext ای که از IdentityDbContext مشتق شده استفاده نکنید؟

منم همین کار را کردم .


سلام دوست عزیز من همون اول خدمتتون عرض کردم یکی از دوستان هم درمیانه همین پست تکرار کرده است کار شما باید از ابتدا و با اصول MVC پیاده سازی شه برای همین توی یه چرخه افتادید .
همینطور که دوستمون گفتند

1- یک پروژه MVc ایجاد کنید و
2- برای استفاده کامل از Identity مثال Identity رو روی پروژه نصب کنید
3- نام کاربری و کلمه عبور پیشفرض رو تغییر دهید ،
4 - نزدیک به 42 Identity Sample رو باید در چروژه به نام پروژه تغییر دهید .
در صورتی که میخواهید به قسمت ثبت نام ایتمی اضافه کنید فبل از اجرا پروژه در IdentityModels.cs میتوانید اینها رو اضافه کنید
public class User : IdentityUser
{
[Display(Name="نام")]
public string FName { get; set; }
[Display(Name = "نام خانوادگی")]
public string Lname { get; set; }
[Display(Name = "نام پدر")]
public string FatherName { get; set; }
[Display(Name = "کد ملی")]
public string NationalCode { get; set; }
و پروژه رو اجرا کنید
، این همه هم اذیت نمیشوید

دوستان این یک پروژه هست که به عنوان نمونه ایجاد کردم و Identity هم بهش اضافه شده . دانلود کنید و اجرا بگیرید تا متوجه کاری که میخوام بکنم و مشکل بشید .

http://www.mediafire.com/download/u0io8ztd91m96sw/MVCIdentity.7z

اول این توضیحات من را بخونید و بعد پروژه را اجرا کنید :

در فولدر Model ->Entity کلاس Post را اضافه کردم :
public class Post
{
public int Id { get; set; }

public string Title { get; set; }

public virtual AspNetUsers Users { get; set; }
public virtual byte[] RowVersion { get; set; }
}

همچنین یک کلاس هم بنام AspNetUsers هست که از IdentityUser ارث بری شده :
public class AspNetUsers : IdentityUser
{

public virtual ICollection<Post> Post { get; set; }

}

این 2 کلاس با Navigation Property به هم متصل میشن .

در فولدر Context هم ِDbContext هست که ار IdentityDbContext ارث بری شده و Migration براش فعال شده .

در کنترلر Home این را نوشتم :
public ActionResult Index()
{
DbContext db = new DbContext();

Post post = new Post();

db.Posts.Add(post);
db.SaveChanges();

return View();
}

تا دیتابیس با اجرا پروژه ساخته بشه .


خوب حالا پروژه را اجرا کنید . صفحه ی اول که باز شد دیتابیس ساخته میشه . تا اینجا مشکلی نیست . (بریدSqlServer ببینید)

حالا برید به قسمت Register ویک کاربر ثبت نام کنید .(Validation پسورد را غیرفعال کردم تا راحت باشید) میبینید که موقع ثبت نام خطا میده .

حالا اگر برعکس اول بیاید کاربر ثبت نام کنید جداول Identity ساخته میشه و مشکلی نیست ولی وقتی برید صفحه ی اول را بازکنید میاد جدول خود پروژه را بسازه که خطا میده .

دوستان پیشاپیش بابت راهنمایی تشکر ...

HOSSEINONLINE7
چهارشنبه 19 شهریور 1393, 18:38 عصر
یعنی این همه برنامه نویس اینجا هست هیچ کس از این امکانات استفاده نمیکنه ؟ چیز سخت و پیچیده ایی نیست .

این پروژه که بالا گذاشتم نمونه کده چیزی نداره . لطفا دانلود و ارورش را رفع کنید یا یک پروژه ی ساده خودتون ایجاد کنید و Identity را بهش اضافه و کلاس User را با یک کلاس دیگه از خودتون بینشون Relation برقرار کنید تا من متوجه بشم .

خواهش میکنم ...:ناراحت:

sunn789
چهارشنبه 19 شهریور 1393, 23:35 عصر
دوست عزیز این رو ببین میتونی اجرا کنی
وبلاگ شخصی من هست اگر دیدی نشد بفرما یه پروژه ایجاد کنم براات بفرستم ، البته روی سیستم من VS 2013.3 نصب شده

HOSSEINONLINE7
پنج شنبه 20 شهریور 1393, 14:06 عصر
دوست عزیز این رو ببین میتونی اجرا کنی وبلاگ شخصی من هست اگر دیدی نشد بفرما یه پروژه ایجاد کنم براات بفرستم ، البته روی سیستم من VS 2013.3 نصب شده من یک پروژه ی MVC5 ایجاد کردم که Identity 1 پیش فرض روش نصب بود . متوجه شدم مشکلی که با Identity 2 دارم اینجا هیچ ایرادی نداره و پروژه کار میکنه . رفتم روی همون Identity 2 تمام اون 42 - 43 نام پروژه ایی که گفتید باید تغییر بدم را انجام دادم . به احتمال زیاد مشکل همینه ولی با اجرای پروژه خطا میده : http://up.vbiran.ir/uploads/12580141042687243467_Capture.PNG





دیگه چیزی برای تغییر نبود . این قسمت نمیدونم مربوط به کجاست که باید تغییر کنه !

من از دستور
Install-Package Microsoft.AspNet.Identity.Samples -Pre

برای نصب Identity 2 استفاده میکنم . سوئیچ های مختلف را امتحان کردم تا پیش فرض با نام پروژه ی خودم نصب بشه ولی کار نمیکنه .

sunn789
پنج شنبه 20 شهریور 1393, 17:21 عصر
بهترین راه تغییر اینه که با استفاده از ctrl+f در کل پروژه جستجو کنی و با ایتفاده از اهمان پنل کوچیک که داری باهاش توی کل پروژه جستجو میکنی نام پروژه رو توی قسمت repalce بگذار و تمامی نامهای identitySample را یکجا به نام پروژه تغییر بدهید ، که در این صورت نباید این نام قرمز رنگی که توی global هست دیده شود و به نام پروژه تغییر پیدا کرده باشد ، اونوقت تمام پروژه رو اجرا کن اما یادتان باشد برای اولین بار قبل از ایجا Migration با نام کاربری وارد برنامه شوید در غیر اینصورت پروژتون دچار مشکل میشود

HOSSEINONLINE7
دوشنبه 24 شهریور 1393, 13:28 عصر
چرا وقتی بین جدول خودم و جدول Identity User میخوام Relation برقرار کنم خطا میده ؟

http://up.vbiran.ir/uploads/40831141077015435251_Capture.PNG

حتی کلید جدول خودم را هم از نوع Guid گذاشتم بازم همین ارور را میده !

mohammadreza.najafipour
پنج شنبه 17 مهر 1393, 21:47 عصر
حسین جان پروژه ای که گذاشته بودی رو دانلود کردم و تغییرات مورد نیاز رو روی اون اعمال کردم. برای من که نتیجه داد و دیاگرامش به صورت زیر شد:

124389
پروژه رو از لینک زیر میتونی دانلود کنی و تست بگیری ازش.
http://www.mediafire.com/download/gg7eqt7hr9kv1oy/MVCIdentity.rar
در جریانم بذار :لبخندساده:

HOSSEINONLINE7
جمعه 18 مهر 1393, 11:18 صبح
حسین جان پروژه ای که گذاشته بودی رو دانلود کردم و تغییرات مورد نیاز رو روی اون اعمال کردم. برای من که نتیجه داد و دیاگرامش به صورت زیر شد:

124389
پروژه رو از لینک زیر میتونی دانلود کنی و تست بگیری ازش.
http://www.mediafire.com/download/gg7eqt7hr9kv1oy/MVCIdentity.rar
در جریانم بذار :لبخندساده:

مرسی محمدرضا جان خیلی لطف کردی بالاخره جواب داد:لبخند:

سناریو DbContext را کجا باید مشخص کنیم ؟ من میخوام Migration براش فعال باشه.

HOSSEINONLINE7
دوشنبه 21 مهر 1393, 14:16 عصر
خوب دوستان برای تکمیل این تاپیک من جواب سوال قبل خودم را هم پیدا کردم .

توضیح میدم تا اگر کسی میخواست استفاده کنه .

برای فعال کردم Migration در Identity 2 باید بصورت زیر در Identity Model این کار را انجام بدید :

public ApplicationDbContext()
: base("DefaultDatabase", throwIfV1Schema: false)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, MvcApp.Migrations.Configuration>("DefaultDatabase"));
}

در ضمن در Dbcontext خودتون نیازی نیست دیگه کاری بکنید و همینجا با این دستور Migration را برای کل دیتابیس فعال میکنه .