有两种方法可以创建实体框架数据模型:
我真的还不知道它们之间有什么区别,哪个更好,哪个更易于维护?
如何将EF模型添加到在演示文稿,业务逻辑和数据模型之间存在问题分离的项目中?
答案 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 扩展名)(如果您先使用数据库/模型 - 并从那里开始)。