gpt4 book ai didi

asp.net-mvc - 为 "simple"SaaS 启动选择 ORM (ASP.NET MVC)

转载 作者:行者123 更新时间:2023-12-04 23:10:37 25 4
gpt4 key购买 nike

我即将开始开发一个基于 Web 的应用程序,我可以最好地将其描述为 37Signal 的 Highrise 联系人管理应用程序的专门版本,针对草坪护理等服务业务。我决定使用 ASP.NET MVC 来利用我的 BizSpark 成员资格并利用我已经知道的 C#/ASP.NET/SQL Server。

我正在做一些研究来为项目选择 ORM;我不确定我是否应该使用诸如 LINQ to SQL 之类的轻量级工具,或者使用 NHibernate 的大炮。在这一点上,我不认为应用程序过于复杂。我基本上有这些模型:

  • 帐号
  • 用户(由 ASP.NET 提供,但我可能需要扩展它)
  • 客户
  • 招聘

  • 适用以下业务规则的地方:
  • 帐户是主记录(因为它代表订阅者),其他所有内容(用户、客户、工作)都与它无关
  • 一个客户可以有多个工作
  • 有两种类型的客户:“潜在客户”和“客户” - 这个想法是客户可以从我们提供的表单中请求跟进并自动添加到帐户的客户数据库中,然后员工可以跟进并安排工作,“转换”潜在客户
  • 一项工作可以是一次性的,也可以是定期安排的(例如每两周一次,每月一次)

  • 我有一个坏习惯,就是试图过度设计事物。 LINQ to SQL 似乎可以立即满足我的需求,但我担心 future 的可扩展性以及使用功能更丰富的 ORM(例如 Entity Framework 或 NHibernate)的前期成本是否会在查询效率和优化。我正在考虑使用 Windows Azure 来托管应用程序。

    有什么想法吗?

    最佳答案

    您的模型看起来很简单,Linq2Sql、Entity Framework 和 NHibernate 都支持。

    您需要做出的最大选择是,您是要遵循领域驱动设计方法进行软件建模,还是要将对象用作数据库行。如果你想在将行映射到对象时变得有趣,NHibernate 是最好的选择。如果您对业务对象和数据库行之间的 1:1 感到满意,Linq2Sql 和 Entity Framework 就好了。

    NHibernate 和 Entity Framework 在一定程度上支持不从基类继承并且可能不知道它们的持久性要求的 POCO 对象。 Linq2Sql 可以,但它的hacky 和奇怪。

    就扩展而言,所有这三个 ORM 工具都会让您走得更远,但 AFAIK NHibernate 在拆分数据库服务器和处理跨数据库 ID 方面有更多选择,甚至在工作中还提供一些分片支持。

    NHibernate 还支持最多的提供者,您可以在一个小时内从 MSSql 转到 MySql,使用 Linq2Sql 和 EF(尽管即将提供支持,但您不能)

    所以TL; DR:

  • NHibernate 如果你想要更好的 POCO 支持、更多的缩放功能,以及“有一个映射”行-> 对象映射功能。 FluentNHibernate 很棒。您有多个提供商支持
  • Entity Framework 如果你想要更好的设计器 GUI 支持并且愿意等待 EF4、vs2010 以获得功能齐全的 ORM。
  • Linq2Sql 如果您只需要简单的数据库访问。

  • 我已经使用了所有三个,我对 EF1 最不满意,EF4 更好但不如 NHibernate。

    当我需要花哨时,我将 EF4 与 VS 2010 一起用于所有 future 的“简单 CRUD”应用程序和 NHibernate。

    关于asp.net-mvc - 为 "simple"SaaS 启动选择 ORM (ASP.NET MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709827/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com