一对多:
public class Category {public Category(){Id = GuidComb.GenerateComb();}public Guid Id { get; set; }public string Name { get; set; }public string Description { get; set; }public virtual IList<Topic> Topics { get; set; } }public class Topic {public Topic(){Id = GuidComb.GenerateComb();}public Guid Id { get; set; }public string Name { get; set; }public DateTime CreateDate { get; set; }public virtual Category Category { get; set; } }public class CategoryMapping : EntityTypeConfiguration<Category> {public CategoryMapping(){HasKey(x => x.Id);HasMany(x => x.Topics).WithRequired(x => x.Category);} }public class TopicMapping : EntityTypeConfiguration<Topic> {public TopicMapping(){HasKey(x => x.Id);HasRequired(t => t.Category).WithMany(t => t.Topics).Map(m => m.MapKey("Category_Id")); // 注意:如果实体中保存外键属性,那么这样写:this.HasRequired(t => t.Category).WithMany(t => t.Topics).HasForeignKey(m => m.Category_Id); } }
多对多:
public class TopicTag {public TopicTag(){Id = GuidComb.GenerateComb();}public Guid Id { get; set; }public string Tag { get; set; }public virtual IList<Topic> Topics { get; set; } }public class Topic {public Topic(){Id = GuidComb.GenerateComb();}public Guid Id { get; set; }public string Name { get; set; }public DateTime CreateDate { get; set; }public virtual IList<TopicTag> Tags { get; set; } }public class TopicTagMapping : EntityTypeConfiguration<TopicTag> {public TopicTagMapping(){HasKey(x => x.Id);} }public class TopicMapping : EntityTypeConfiguration<Topic> {public TopicMapping(){HasKey(x => x.Id);HasMany(t => t.Tags).WithMany(t => t.Topics).Map(m =>{m.ToTable("Topic_Tag");m.MapLeftKey("TopicTag_Id");m.MapRightKey("Topic_Id");});} }
谢谢浏览!