0
這是我的模型多對多插入代碼實體框架第一
public class Post
{
public long PostID { get; set; }
[Required]
[MaxLength(255)]
public string Title { get; set; }
}
public class Tag
{
public long TagID { get; set; }
[Required]
[Display(Name = "Tag Name")]
[MaxLength(30)]
public string TagName { get; set; }
public bool IsActive { get; set; }
}
public class TagPost
{
public long TagPostID { get; set; }
public long PostID { get; set; }
public long TagID { get; set; }
[ForeignKey("PostID")]
public virtual Post Posts { get; set; }
[ForeignKey("TagID")]
public virtual Tag Tags { get; set; }
}
1)這是正確的許多人在EF 4.1很多配置不提ModelBinder的許多許多。
2)如果我已經使用dataannotation完成了多對多的配置,爲什麼數據沒有插入到tagpost中。
public void InsertPostQuestion(Post post,List<string> tags)
{
context.Posts.Add(post);
foreach (string tag in tags)
{
Tag tagr = new Tag();
tagr.TagName = tag;
tagr.IsActive = true;
context.Tags.Add(tagr);
}
context.SaveChanges();
}
3)我必須定義modelbinder有多次插入或刪除或更新?
modelBuilder.Entity<Post>().
HasMany(c => c.Tags).
WithMany(p => p.Posts).
Map(
m =>
{
m.MapLeftKey("PostID");
m.MapRightKey("TagID");
m.ToTable("TagPost");
});
然後,您需要創建第三個模型定義,並在foreach中實例化第三個類。在你的例子中,有一個[Key] TagPostId,但它對應用程序沒有任何價值,所以這不算數。 – robrich
你的意思是我必須做一個手動輸入tagpost,如果我正在創建第三個模型? – maztt
是的,如果你需要額外的屬性,你需要構造和處理這個第三個模型。如果它只是兩個模型之間的多對多鏈接,您可以在每個模型中只有一個List,而EF會自動創建內部表格。 –
robrich