如何使用EF在ASP.NET MVC中自动创建数据库和存储库?

时间:2012-03-15 22:19:02

标签: c# asp.net asp.net-mvc database entity-framework

我已经开始学习ASP.NET MVC了,在这个学习的时候我想创建一个简单的博客网站。我决定使用ASP.NET MVC和ORM实体框架。可能你有关于这个主题的一些有用的链接? 我试着先从创建模型代码开始。 我有3个类Post,User(User can admin),Comments。

我需要帮助才能建立数据库模型之间的关系。我现在有这样的代码:

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public List<Comment> Comments { get; set; }
    public DateTime PublishDate { get; set; }
}

public class User
{
    public readonly bool IsAdmin { get; set; }
    public string FirstName { get; set; }
    public string SecondName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
    public DateTime DateOfBirthday { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
    public List<Post> Posts { get; set; }
    public List<Comment> Comments { get; set; }
}

public class Comment
{
    public int CommentId { get; set; }
    public string UserName { get; set; }
    public string Content { get; set; }
    public DateTime PublishDate { get; set; }
}

这些是我创建数据库表的类,但我不确定如何使关系像多对一一样。 为Post做一个注释列表或者只是写一个注释ID是正确的吗?我从来没有使用过很深的数据库,只看了几课。有人可以建议如何制作存储库或更正我的模型代码? 非常感谢你!

2 个答案:

答案 0 :(得分:4)

有很多关于如何做到这一点的好教程。这个,例如:

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

要回答你的一些问题,是的,名称CommentId是正确的;您希望存储在数据库中的每个EF类都必须具有名为Id的字段或名为MyClassId的字段(其中“MyClass”是您的类的名称)。我发现后者让你的生活更轻松,特别是在加入时。

除非您有一些EF无法自动判断的关系,否则您不必自己指定关系:EF会自动为您检测正确的关系。我的代码中没有看到EF无法自动处理的任何内容。

您需要做的一件事是将List<Post>List<Comment>字段设为虚拟;这样,EF可以提供数据库支持的关系。

祝你好运。

答案 1 :(得分:2)

我很喜欢Building an MVC 3 App with Code First and Entity Framework 4.1 教程。包含我发现非常容易理解的视频。