【问题标题】:What is the best database architecture to use for my asp.net site?用于我的 asp.net 站点的最佳数据库架构是什么?
【发布时间】:2010-09-13 19:37:50
【问题描述】:

我正在考虑使用 ASP.NET 4.0 创建一个新网站。我目前正在开始构建一个需要存储报告信息的网站。

我的数据库有大约 25-30 个表(有很多关系),我的 Web 应用程序需要从中存储和读取信息。通常,我使用的架构是分层架构,其中我有一个业务逻辑、业务对象和数据访问层。但我正在考虑继续使用 .NET 4.0 功能。

所以我考虑使用实体框架主要是因为我真的很喜欢在更大范围内使用 LINQ 的想法。

如果有人能告诉我这对于我这样规模的项目是否是一个好主意,我将不胜感激。我在 EF 上看到了一些优点和缺点,但我似乎无法做出决定(可能是由于我缺乏开发经验)。

我只需要确保解决方案在将来添加其他表时可维护。

感谢您的帮助!

【问题讨论】:

  • 我认为您需要更改问题的标题“什么是用于我的 asp.net 网站的最佳数据库架构”是非常主观的,并且考虑到您的实际问题,有些误导。
  • @keitherwarren7 是正确的,您真正要问的是 ORM(或者至少这是我对您所问问题的看法)。

标签: asp.net entity-framework


【解决方案1】:

我不得不说,Professional ASP.NET MVC 中描述的方法从未让我失望,我已经在非常成功的系统上使用了两次。如果您希望使用 WebForms,可以对数据访问类型代码使用类似的方法。

基本上,他们在前端使用 MVC,在后端使用简单的存储库模式,这对我来说效果很好。

【讨论】:

  • 更新了链接和更多信息。
【解决方案2】:

我认为 EF 很棒,我建议在大型和小型项目中都使用它。就像它拥有的任何东西一样,它也有一些您可能不“喜欢”的怪癖和东西,但总而言之,它使您的数据访问变得更加简单。

EF 中的设计器使向模型中添加新表/实体变得非常简单(您所要做的就是从数据库中进行刷新)。

【讨论】:

  • 但我认为尝试在一个实体中添加大约 30 个表会有点难以维护,因为我的所有表都与另一个表有某种形式的关系。我将如何划分我的 EF?
  • @R100:不确定我是否理解你的问题。您可以在 EF 设计器上拖动实体(来自 VS 中的服务器资源管理器),它了解关系和 FK 并为您映射所有这些。当您说“...在一个实体中”时,实体是表的表示(实体的实例是所述表中的一行),因此您不会在一个实体中表示 30 个表。这是一个模型,30 个实体。
  • 感谢您的回复。我只是认为将 30 个表添加到一个 edmx 文件中可能无法维护,特别是如果我的数据库将来会变得更大。有什么可以推荐的吗?
  • @R100:我有一个项目,在一个 EDMX 文件中包含超过 50 个表,我完全没有问题。不过,有时很难遵循小线。 =) 但是您可以在一个项目中拥有多个 EDMX 文件,因此您可以根据需要将架构划分为多个模型。问题是,您必须在模型中找到一个干净的“断点”,其中关系不跨越模型。
【解决方案3】:

Entity Framework 4 已经走过了漫长的道路。他们现在支持 POCO 模型,该模型减轻了与实体框架 1 相关的许多痛苦。Julie Lehrman's 2nd edition book 很好地涵盖了这些问题。

也就是说,NHibernate 3 与他们的 linq 提供程序也是一个很好的解决方案。以及他们的 SysCache 实现,它附带并且对提高性能非常强大。 EF 没有二级缓存的好故事。 AppFabric 不同,而且设置起来更费力。

ORM 很强大。您会发现有些人告诉您远离,但是编写一个数据层来参数化所有查询、缓存对象、鼓励事务和简化验证是相当耗时的。

就个人而言,我更喜欢 NHibernate,但两者都是很棒的工具。

【讨论】:

  • 从未听说过 NHibernate。看起来很有趣。我去看看。
猜你喜欢
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
相关资源
最近更新 更多