Wily_Fox
پنج شنبه 10 مرداد 1392, 10:48 صبح
با سلام و خشته نباشید
من میخوام کلید اصلی UserProfile در Coworker هم کلید اصلی باشه و هم کلید خارجی
در نتیجه کدهای زیر رو نوشتم:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int UserId { get; set; }
public virtual Coworker Coworker { set; get; }
}
public class Coworker
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .None)]
public int UserId { set; get; }
public virtual UserProfile UserProfile { get; set; }
/// <summary>
/// آی دی همکاران توسط یک جدا کننده در این فیلد ذخیره خواهد شد
/// جدا کننده
/// -
/// انتخاب شده است
/// </summary>
[Required]
public string CoworkersID { set; get; }
}
و همچنین:
modelBuilder.Entity<UserProfile>().HasOptional(p => p.Coworker).WithRequired(p => p.UserProfile).WillCascadeOnDelete(false)
از طرفی می خوام کلید اصلی در Coworker رو خودم هنگام insert تعیین کنم.
یعنی یه همچین چیزی بنویسم:
var item = new Coworker
{
UserId=18,
CoworkersID="2-3-5-10"
};
db.Coworker.Add(item);
,...
مشکل اینجاست که با توجه به اینکه UserId در Coworker با ویژگی [DatabaseGeneratedAttribute(DatabaseGeneratedOption .None)] مزین شده اما همچنان اصرار داره خودش بصورت Identity با توجه به جدول UserProfile رکورد هارو insert کنه!!!!!
من میخوام کلید اصلی UserProfile در Coworker هم کلید اصلی باشه و هم کلید خارجی
در نتیجه کدهای زیر رو نوشتم:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int UserId { get; set; }
public virtual Coworker Coworker { set; get; }
}
public class Coworker
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .None)]
public int UserId { set; get; }
public virtual UserProfile UserProfile { get; set; }
/// <summary>
/// آی دی همکاران توسط یک جدا کننده در این فیلد ذخیره خواهد شد
/// جدا کننده
/// -
/// انتخاب شده است
/// </summary>
[Required]
public string CoworkersID { set; get; }
}
و همچنین:
modelBuilder.Entity<UserProfile>().HasOptional(p => p.Coworker).WithRequired(p => p.UserProfile).WillCascadeOnDelete(false)
از طرفی می خوام کلید اصلی در Coworker رو خودم هنگام insert تعیین کنم.
یعنی یه همچین چیزی بنویسم:
var item = new Coworker
{
UserId=18,
CoworkersID="2-3-5-10"
};
db.Coworker.Add(item);
,...
مشکل اینجاست که با توجه به اینکه UserId در Coworker با ویژگی [DatabaseGeneratedAttribute(DatabaseGeneratedOption .None)] مزین شده اما همچنان اصرار داره خودش بصورت Identity با توجه به جدول UserProfile رکورد هارو insert کنه!!!!!