代码改变世界

EF Code First 简单的示例

2013-04-08 17:46  音乐让我说  阅读(590)  评论(0编辑  收藏  举报

一对多:

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");
                    });
    }
}

 

谢谢浏览!