一对多:
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"); }); } }
谢谢浏览!