所以我想用MVC 4和Entity Framework 5构建一个应用程序。我之前已经构建了简单的应用程序,但现在我需要一些安全性来解决当前的问题...我有一些困惑/问题,我希望有人可以回答;
首先......使用MVC 4 Internet应用程序模板,它实现了SimpleMembershipProvider。我已阅读有关修改,实现的所有主要文章......但是,这使用了Code-First实现... 问题:我有一个现有的数据库,我想将该方案导入到EDMX数据库的第一种方法......当我的数据库紧密地直接绑定到用户表(userid)时,如何实现MVC 4简单成员资格提供程序? ...我知道我可以使用自己的用户表,只要我指定用户ID和用户名字段,如果记录的......这会影响提供者,还是现有的“AccountController”代码?这些是否需要修改?
其次,我正在寻找的是这种架构的工作流程......我是“老派”主要是数据库第一种方法......我的项目是一个巨大的WIP(正在进行中)。我有一个基础,但需要根据需要进行扩展......当有相当多的变更管理发生时,有人可以首先提供一些数据库与其他方法的见解吗?
答案 0 :(得分:0)
您仍然可以使用Code First映射到现有数据库。您可能需要将属性显式映射到表列,因为映射不遵循默认约定,但这不会阻止您使用Code First。
从数据库转换到另一种思维模式时。关注对象如何相互作用。然后,在某些时候,您将在它们交互后保存对象的状态。这是ORM发挥作用的地方。检测更改并执行必要的SQL语句以保持对象的当前状态。
将数据库视为另一个存储容器。理论上,它可以被另一个持久存储机制(文档db,文件,持久性哈希表,内存列表等)替换。实际上并不是那么简单,但将数据库视为一个简单的存储容器的想法有助于摆脱大多数开发人员根深蒂固的单片数据库概念。
但也不要忽视设计的视角。如果它是一个简单的数据形式应用程序,您将在未来添加功能,而不是简化设计。比不要试图完全抽象出DB。你知道它在那里,与UI的关系几乎是1:1,所以利用它。
在最简单的形式中,可以通过使用MVC控制器来管理模型(通过ORM映射到DB)和视图(razor模板)之间的交互来实现关注点分离,我个人的偏好是将ORM保持在因此我通常查询数据库,将域模型映射到viewmodel,然后将viewmodel传递给视图。
再次,如果它是一个简单的应用程序并且屏幕直接映射到数据库而不是viewmodel可能有点过分。