标签: subsonic-simplerepository

ORM比较:首先是数据库还是类?

最近我一直在研究可用的基于.NET的ORM.我注意到每个人都会在一两个阵营中选址.在一个阵营中,首先创建数据库,ORM提供了一种更简单的方法来访问应用程序中的数据库.在第二阵营中,对象模型首先存在,ORM有助于将对象模型保存在数据库中.

现在我不是要求或断言一个阵营是否比另一个更好.我当然可以看到每种设计方法的原因.令我感到沮丧的是,我最近阅读的所有教程和"入门"文档都没有出现,并且在开头说"这个工具假设您从现有的数据库/对象模型开始".对我来说,这对于你是否会使用一个ORM而不是另一个来说非常重要.

因此,在做了一堆阅读并创建了几个"Hello World"项目之后,我已经在我所研究的ORM支持的工作流程上汇集了一系列要点.任何有这些工具经验的人都可以告诉我,我是否做了任何不正确的陈述,或完全错过了任何非常重要的观点.具体来说,我真的想知道我对数据库模式或对象模型是否应该首先使用每个工具的假设是正确的.

Linq To SQL

  • 数据库应该首先存在
  • 仅适用于SQL Server
  • DataContext类用于在类和数据库之间进行读/写
  • DataContext可以重新调用实际物理类,或者动态类型可以用于根据数据库模式自动创建类型.
  • 映射默认为映射表名到类名,属性名到列名
  • 可以通过嵌入在每个类中的属性来定制映射

亚音速(活跃记录)

  • 应首先创建数据库
  • 使用许多数据库技术
  • 使用T4模板从现有数据库模式自动生成类
  • 生成类后,与数据库的连接完全透明
    • 调用类构造函数会自动创建数据库中的记录
    • 更改属性值会自动更新数据库.

亚音速(简易存储库)

  • 类结构应该是第一位的
  • 使用许多数据库技术
  • 创建存储库类并将其连接到数据库
  • 当类添加到存储库时,会自动创建和更新数据库模式
    • repo.Add<MyClass>(instance);
    • 存储库使用反射来创建/更新数据库模式
    • 每次创建一个表,并为每个属性创建一列

NHibernate的

  • 可以首先创建数据库或类结构
    • 可以创建映射以将新类结构与现有数据库匹配
    • 映射可用于自动生成数据库模式
  • 使用许多数据库技术
  • 最终程序集中的类归属于NHibernate映射设置,这些设置将类和属性映射到表和列
  • 添加映射配置有两种方法
    • XML文件嵌入二进制文件中, <classname>.hbm.xml
    • 添加到代码中的属性
  • 支持高级映射配置,包括一对一,一对一,多对一,多对多,继承等.等...

.net nhibernate linq-to-sql subsonic-active-record subsonic-simplerepository

9
推荐指数
1
解决办法
1083
查看次数