ورود

View Full Version : سوال: درج رکورد در جدول many to many با autoMapper



pArisA1986
یک شنبه 31 خرداد 1394, 10:45 صبح
با سلام من جدول article و articlecategory دارم که با هم رابطه many to many دارند

public class Article : IAuditInfo
{
#region Propertise
[Display(Name="کد مقاله")]
public int ArtId { get; set; }
[Display(Name = "عنوان مقاله")]
public string ArtTitle { get; set; }
[Display(Name = "خلاصه مقاله")]
public string ArtSummary { get; set; }
[Display(Name = "متن مقاله")]
public string ArtText { get; set; }
[Display(Name = "وضعیت مقاله")]
public EArticleStatus ArtStatus { get; set; }
[Display(Name = "نوع مقاله")]
public EArticleType ArtType { get; set; }
[Display(Name = "تاریخ آخرین وضعیت")]
public DateTime? ArtStatusModifiedDate { get; set; }
[Display(Name = "عکس مقاله")]
public string ArtImagePath { get; set; }
[Display(Name = "توضیح مدیریت")]
public string ArtManageDescription { get; set; }

[Display(Name="تعداد بازدید")]
public int ViewCount { get; set; }

#endregion

#region IAuditInfo

public DateTime? CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }

#endregion

#region Navigations
public string ArtUserInserterId { get; set; }
public User ArtUserInserter { get; set; }

public string ArtUserModifierId { get; set; }
public User ArtUserModifier { get; set; }

public long? ArtInstrumentId { get; set; }
public Instrument ArtInstrument{ get; set; }


public virtual ICollection<ArticleCategory> ArtCategories { get; set; }
public virtual ICollection<Attachment> ArtAttachments { get; set; }
#endregion
}

public class ArticleCategory : IAuditInfo
{
#region propertise
public int ArcId { get; set; }
[Display(Name = "عنوان")]
public string ArcTitle { get; set; }
[Display(Name = "وضعیت")]
public bool ArcIsActive { get; set; }
#endregion

#region IauditInfo
public DateTime? CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
#endregion

#region Navigation
public ICollection<Article> ArcArticles { get; set; }

#endregion
}



public ArticleCategoryConfiguration()
{
HasKey(c => c.ArcId);

HasMany(a => a.ArcArticles)
.WithMany(a => a.ArtCategories)
.Map(a =>
{
a.MapLeftKey("ArcId");
a.MapRightKey("ArtId");
a.ToTable("ArticleCategory_Article");
});
}

public class ArticleConfiguration : EntityTypeConfiguration<Article>
{
public ArticleConfiguration()
{
HasKey(a => a.ArtId);

HasOptional(a => a.ArtUserInserter)
.WithMany(a => a.ArticlesInsert)
.HasForeignKey(a => a.ArtUserInserterId)
.WillCascadeOnDelete(false);

HasOptional(a => a.ArtUserModifier)
.WithMany(a => a.ArticlesModified)
.HasForeignKey(a => a.ArtUserModifierId)
.WillCascadeOnDelete(false);

HasOptional(a => a.ArtInstrument)
.WithMany(a => a.Articles)
.HasForeignKey(a => a.ArtInstrumentId)
.WillCascadeOnDelete(true);

}
}

با توجه به کدهای بالا برای من یه جدول واسطی درست میشه به نام ArticleCategory_Article
می خوام بدونم چطوری باید با استفاده از viewmodel که ساختم و با automapper به مدل اصلی بایند کردم طوری رکورد برای article درج کنم که در جدول articleCategory رکورد جدیدی ثبت نشود؟
در واقع می خوام بگم این مقاله در جدول article با توجه به دسته بندی موجود ثبت بشه و دسته بندی جدیدی اضافه نکن
ولی متاسفانه هر بار که یه article اضافه می کنم میره یه دسته بندی هم با مقدار null می سازه و از طرفی در جدول واسط article ایجاد شده به category که مقدار null داره fk میخوره

r4hgozar
یک شنبه 31 خرداد 1394, 13:34 عصر
سلام.
این کمکتون می کنه.
http://www.dotnettips.info/post/1235/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%AA%D9%81%D8%B5%DB%8C%D9%84%DB%8C-%D8%B1%D8%A7%D8%A8%D8%B7%D9%87-many-to-many-%D8%AF%D8%B1-ef-code-first

salar IT man
یک شنبه 31 خرداد 1394, 14:55 عصر
در تکمیل مقاله قبل اینجا رو هم ببنید (http://www.dotnettips.info/post/1860/%D8%A8%D9%87-%D8%B1%D9%88%D8%B2-%D8%B1%D8%B3%D8%A7%D9%86%DB%8C-%D8%B3%D8%A7%D8%AF%D9%87%E2%80%8C%D8%AA%D8%B1-%D8%A7%D8%AC%D8%B2%D8%A7%D8%A1-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7%D8%A7%D8%AA-%D8%AF%D8%B1-ef-code-first-%D8%A8%D9%87-%DA%A9%D9%85%DA%A9-graphdiff)

pArisA1986
یک شنبه 18 مرداد 1394, 20:01 عصر
دوستان از راهنمایی خوبتون ممنون :لبخندساده:
عالی بود :تشویق: