如何创建实体框架数据模型?

时间:2013-12-13 20:42:21

标签: c# entity-framework

有两种方法可以创建实体框架数据模型:

  1. 通过在代码中创建类。
  2. 选择现有数据库。
  3. 我真的还不知道它们之间有什么区别,哪个更好,哪个更易于维护?

    如何将EF模型添加到在演示文稿,业务逻辑和数据模型之间存在问题分离的项目中?

3 个答案:

答案 0 :(得分:1)

感谢Daniel,mikhairu和Filix。

我达到了这个目标:

那里的所有答案都是正确的,但设计取决于我的需求。 因此,如果我选择Code-First,那么这并不意味着它的错误,因为我的需求需要Code-First。 如果我选择Database-First,那么这并不意味着它的错误,因为我的需求需要数据库优先。

所以,整个过程取决于我的需求。

问候。

答案 1 :(得分:0)

我个人的偏好是先做数据库,然后用当前的数据库模式更新EDMX。首先执行代码意味着您将在Visual Studio中为实体建模,然后在EDMX中更新数据库。我首先选择db的原因是,在我看来,它更容易搞砸代码。曾经有一段时间T4没有正确地构建实体并搞砸了整个EDMX。首先使用db,这不是问题,只需清除EDMX并从db进行更新,您将立即恢复运行。首先搞砸代码EDMX可能会改变你的数据库架构,这将是一个巨大的问题。这只是我的偏好,虽然我不相信有正确或错误的做法。我知道很多人首先选择代码很好,但我喜欢先做db。

答案 2 :(得分:0)

我发现,如果您正在扩展使用数据库的现有应用程序,那么数据库优先方法可能更合适(例如,如果您让DBA创建数据库)。如果您是从头开始创建应用程序而您是设计数据库(和应用程序逻辑)的应用程序,那么首先使用代码可能会更容易。

但是这种分离并不是绝对的,因为即使你有数据库,也可以使用Entity Framework Power Tools生成POCO类。

我倾向于使用代码优先方法来处理我构建的所有新应用程序。我设置了我的实体类以及实体之间需要的关系。我发现当你构建一个应用程序并且你需要修改你的数据库(在这里和那里添加一个表或添加/删除列)时,使用代码优先方法很容易做到这一点。我发现我在不同的机器上工作,然后我只是从另一台机器上的版本控制存储库中提取最新代码,在Update-Database中运行Package Manager Console来更新/重新创建数据库。这样我就不必将数据库从一台机器复制到另一台机器。

例如,假设您正在处理需要为每个客户端稍加修改的应用程序。您可以使用代码优先,因为根据每个客户端的需要调整类更容易,然后只需更新数据库。

How do I add an EF model to a project that has a separation of concerns between the presentation, business logic, and data model?

假设您的MyProject.DAL(数据访问层)项目使用NuGet包管理器添加对Entity Framework的引用。在您的Models/目录中,创建代码优先模型并添加DbContext派生类(如果您使用代码优先)或添加ADO.NET Entity Data Model * .edmx 扩展名)(如果您先使用数据库/模型 - 并从那里开始)。