如何为.net选择对象关系映射

Ian*_*ose 12 .net orm

(这必须是常见问题解答,所以我希望它会被重复关闭,但我找不到一个包含对问题的良好概述问题等)

在为.net系统选择 ORM 时,应该考虑什么

以上如何通过ORM 解决 .net系统常用的问题.

(当我说"考虑使用ORM"作为.net问题时,我应该在答案中链接到巫婆堆栈溢出问题)

是否希望提供新答案并获得赏金?

Mic*_*dox 9

这是我在选择.NET ORM方面指出的主要问题/答案:

NHibernate,实体框架,活动记录或linq2sql

我在答案中提出了一堆"重复"类型的问题.因此,您可以从各种不同的角度进行大量的阅读.

我也会尝试回答您的具体问题:

在为.net系统选择ORM时,应该考虑什么?

  • 您希望确保它适用于您的数据库.如果您的数据库设计在15年前是最先进的,那么许多较小和/或不太成熟的ORM将无法用于缺少密钥,奇怪的关系等.

  • 您希望确保它适用于您的数据库供应商.SQL Server支持几乎总是可用,但各种ORM可能支持或不支持其他数据库(MYSQL似乎是第二个最常支持的数据库).

  • 如果要根据.NET类生成数据库,则需要确保ORM支持该类.

  • 如果你想要表现,我猜你会远离表现糟糕的表演,但那些永远不会成为前五名单,所以只要你选择具有一些主流街头信誉的ORM,你就可以了.

  • 您需要确保它具有您需要支持的功能:http://ayende.com/Blog/archive/2006/05/12/25ReasonsNotToWriteYourOwnObjectRelationalMapper.aspx

  • 考虑供应商锁定以及您是否可以轻松地逃脱它(对于数据库供应商和ORM供应商).

  • 考虑一下你想花多少钱.

  • 考虑一下代码生成的内容.

  • 考虑您对单元测试支持的要求.

  • 考虑您想花多少时间研究各种选项.

  • 考虑ORM周围存在的社区.

有很多事情要记住.我相信我能想到更多.最后,很多情况都是情境性的,您需要自己决定什么对您和您的项目最有利.

以上如何通过ORM解决.net系统常用的问题.

我所知道的唯一一个.NET ORM几乎满足了.NET项目所需要的所有需求(减去更多不起眼的数据库供应商)是NHibernate.它已在许多不同的场景中与许多"遗留"数据库进行了测试.