我是 EF 和数据库设计的新手。我一直在研究如何使用 Repository Pattern 和 Unit of Work,并且看到了很多使用 LINQ 进行的查询。
但我有一个问题。如果将来我们更改数据库的架构,则存储库层必然会发生变化,因为实体本身也会发生变化。换句话说,存储库层与数据库结构紧密耦合。
但是,如果我们使用数据库本身的存储过程封装大部分可能的事务,然后使用 EF 导入它们,那么数据库设计中的更改不会对存储库层产生太大影响。换句话说,层将是这样的:
DATABASE TABLES <---> STORED PROCEDURES <---> EF <---> REPOSITORY <---> APPLICATION LOGIC
为什么我们不遵循这种模式,或者我忽略了任何陷阱?这不是将应用程序与数据库松散地耦合在一起吗?
我认为使用 LINQ 还会将架构与应用程序绑定,这是我关心的问题。如果将来我想进一步规范我的数据库,那就意味着重写整个 LINQ 查询。这是我更喜欢视图而不是显示原始表格的另一个原因。这就像在类中使用属性而不是字段。它增加了一层封装。