ورود

View Full Version : join جدول ها به Identity و سفارشی کردن Identity



gama_slv
چهارشنبه 08 بهمن 1393, 11:47 صبح
برای ایجاد Foreign key یا Navigation property در code first از

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

استفاده میشه. سوالم این که اگر بخوام یک جدول رو به Identity۲ وصل کنم چطوری باید این کار و بکنم. مثلا یک جدول دارم

[Key]
public int MemberID { get; set; }


[Display(Name = "شناسه کاربر")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public int UserID { get; set; }


[Display(Name = "شناسه پیک")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public int PeykID { get; set; }


[Display(Name = "تاریخ عضویت")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> MemberDate { get; set; }


[Display(Name = "شناسه مقدار پرداخت")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public int RangeID { get; set; }




[Display(Name = "امتیاز")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public Nullable<int> Store { get; set; }


[Display(Name = "موجودی")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:#,0 ريال}")]
public int Stock { get; set; }


[Display(Name = "حساب سایه")]
public Nullable<bool> MemberType { get; set; }


[Display(Name = "پیک ها")]
public virtual Peyk Peyk { get; set; }


[Display(Name = "نوع ماهیانه")]
public virtual Range Range { get; set; }


[Display(Name = "پرداخت")]
public virtual ICollection<Payment> Payment { get; set; }


[Display(Name = "وام ها")]
public virtual ICollection<Loan> Loan { get; set; }





فیلد UserID برای اینه که بتونم به با جدوال Identity۲ کار کنم ولی نمیدونم چطوری جدول ها رو به Identity۲ وصل کنم
یک سوال دیگه ای اینه که چطوری میشه Identity۲ سفارشی کرد مثلا دو تا فیلد بهش اضافه کرد؟

saeedtanha001
چهارشنبه 08 بهمن 1393, 18:48 عصر
سلام دوست عزیز ، من سوالتون خوب متوجه نشدم ولی این 2 تا لینک ببینید امیدوارم مشکلتون حل بشه:

Customizing profile information in ASP.NET Identity (http://blogs.msdn.com/b/webdev/archive/2013/10/16/customizing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx)

آموزش Authentication در MVC (http://ably.ir/post/Custom%20Authentication%20and%20Authorization%20in %20ASP.NET%20MVC)

gama_slv
دوشنبه 04 اسفند 1393, 09:54 صبح
نمیدونم کجای سوالم نامفهوم بود
میخوام سفارشهای ثبت شده توسط یوزرها رو مدیریت کنم مثلا بتونم هر یوزر بتونه سفارش ثتب کنه قبلا که از membership یا identity که خودم تعریف میکردم خیلی راحت بود ولی وقتی خواستم از
identity 2 استفاده کنم هیچ راه حلی برای اتصال جداولم به جداول خود vs برای identity ندارم
من روشی که به نظرم میرسه این که
اگر از identity استفاده کنم و یک کلاس هم به نام order داشته باشم و order یک فیلد
public int UserID { get; set; }

دارد که بتونم سفارش هر یوزر رو ببینم

ولی نمیدونم چطوری از کلاس های identity استفاده کنم
از
public virtual ApplicationUser ApplicationUser { get; set; }
در کلاس odrder استفاده کردم تا بتونم user id رو
Foreign key معرفی کنم
ولی وقتی میخوام دیتابیس رو آپدیت کنم ارور میده
KCF.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
KCF.Models.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.
لطفا بگید از چه روشی باید اسفاده کنم

niloo17
دوشنبه 04 اسفند 1393, 10:03 صبح
اگر منظور شما را درست متوجه شده باشم : شما از Membership استفاده کرده اید که در اینصورت یک مدل به نام UserProfile دارید که یک پروپرتی UserId داره


public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int UserId { get; set; }
}


حالا در مدل جدیدتون می حواین از این UserId استفاده کنید . که باید به صورت زیر بنویسید .



[DisplayName("کاربر ایجاد کننده ")]
[ForeignKey("User")]
public int UserId { get; set; }
public UserProfile User { get; set; }

gama_slv
دوشنبه 04 اسفند 1393, 10:15 صبح
نه از identity 2.0 استفاده کزدم , اصلا مدلی به نام UserProfile وجود نداره
فقط میخوام جداول که خودم ساختم رو به جداول identity وصل کنم

r4hgozar
دوشنبه 04 اسفند 1393, 22:03 عصر
سلام.
خود identity 2.0 یکسری property هایی داره واسه user اه می خواین چیز حدید اضافه کتی به جدول یوزر باید تو models تو IdentityModels بری و مثلا بصورت زیر property رو اضافه کنی.

public class ApplicationUser : IdentityUser
{
public int? Age { get; set; }

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

public DbSet<Post> Posts { get; set; }

البته اول باید کلاسش رو بصورت code first ایجاد کنی.
اگه هم بخوای ارتباطی با جدول دیه ای از identity برقرار کنی باید از ICollection استفاده کن. البته اصول ارتباط دهی رو هم باید رعایت کنی.
موفق باشی