使用EF Code First创建数据库和表

时间:2014-04-11 14:13:10

标签: c# entity-framework ef-code-first

我将使用EF Code First创建数据库和表。

EF DB

每个帖子属于一个类别,可以标记许多标签。在Post和Category之间,关系是多对一的,Post和Tag之间的关系是多对多的。

以下是我的代码:

public class BlogContext : DbContext
{
    public DbSet<Post> Posts { get; set; }
    public DbSet<PostTagMap> PostTags { get; set; }
    public DbSet<Category> Categorys { get; set; }
    public DbSet<Tag> PostTags { get; set; }
}
public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string ShortDescription { get; set; }
    public string Meta { get; set; }
    public string UrlSlug { get; set; }
    public bool Published { get; set; }
    public DateTime PostedOn { get; set; }
    public DateTime? Modified { get; set; }
    public Category Category { get; set; }
    public IList<Tag> Tags { get; set; }
}
public class PostTagMap
{

}
public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string UrlSlug { get; set; }
    public string Description { get; set; }
    public IList<Post> Posts { get; set; }
}
public class Tag
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string UrlSlug { get; set; }
    public string Description { get; set; }
    public IList<Post> Posts { get; set; }
}

以下是EF新人的问题:

  1. 我是否为PostTagMap生成代码?
  2. 如何将表间关系应用于我的代码?
  3. 我总是看到人们此时添加DataAnnotation?因为许多在线样本在没有这一步的情况下创建了数据库,所以我很困惑。

1 个答案:

答案 0 :(得分:0)

您的数据模型看起来很好。我会用那个。对于你的问题:

我是否为PostTagMap生成代码?      你想要生成什么样的代码?如果你的意思是,你为它定义任何代码。你真的不需要,因为你已经在post和tag之间定义了一个关系。但是,如果您认为查询更容易,可以。

如何将表之间的关系应用于我的代码?      这种关系已经存在。如类别有很多帖子,帖子属于某个类别。

我总是看到人们此时添加DataAnnotation?因为许多在线样本在没有这一步骤的情况下创建了数据库,      注释用作交叉问题,例如验证,数据类型,数据长度等。