1)ORM(如果是,使用哪种?)
2)Linq2Sql
3)存储过程
4)参数化查询
我真的需要一个足够动态(快速和简单)的解决方案,可以经常替换表格和添加/删除列。
注意:我没有太多关于ORM的经验(只有一点SubSonic),并且通常倾向于使用存储过程,因此也许这将是正确的方式。如果Ling2Sql或NHibernate允许上述情况,我很想学习它们。
需要注意的一点是,如果数据库架构经常变化,你需要在编译时具备某种程度的类型安全性。我发现NHibernate存在这个问题,因为它使用xml映射文件,所以如果你在数据库架构中进行了更改,直到运行时才知道映射已经失效。
存储过程也会出现类似的问题。
使用Linq2Sql将使您在编译时知道代码何处出现问题,当您更改架构时,这对我来说比其他任何事情都更重要,尤其是在处理经常变化的架构时。
你肯定想使用ORM。任何ORM都可以,但你需要的是能生成强类型类的东西。当表格添加、修改或删除字段时,你希望能够重新生成这些类,并仅处理编译时错误。如果你使用动态模型,你可能会遇到许多讨厌的运行时错误。这非常重要!我是sourceforge上 MyGeneration 开发团队的一员,我认为这是你问题的一个很好的解决方案。你可以生成 dOOdads,NHibernate,EasyObjects,EntitySpaces等等。如果你想使用更昂贵的解决方案,请选择CodeSmith 或 LLBLGen Pro。祝你好运 - 任何有兴趣使用 MyGeneration 的人,欢迎随时与我联系。
这个应用程序有多简单?如果我要在几个月内使用架构/设计工作,而不真正担心实际的应用程序...我会考虑使用EDM和动态数据实体Web应用程序项目。在我看来,这可以让您以最少的努力入门。这使您专注于架构、数据和其他很棒的东西。希望这篇文章不会给我带来太多消极的反响!
下面是新项目对话框的样子this
EntitySpaces 可以在一分钟内重新生成您的 DAL/业务层,而且不会有任何代码丢失。请查看试用版 ==> 这里
无需注册,也可在 Visual Studio 下运行。
NHibernate,但前提是您愿意采用面向对象的方法,即先定义类,然后在映射文件中定义所需的表结构,最后使用NHibernate内置的模式生成类创建数据库架构。
如果您想要另一种方式(例如,您有一堆表,然后基于此设计对象),我发现MyGeneration + NHibernate可以实现,尽管我对生成的类不太满意(主要是因为我非常注重真正的面向对象编程)。
如果我站在你的角度,我会尝试将我所知道的(存储过程)与Linq2Sql相结合。Linq2Sql仍然可以使用您的存储过程,但是您还可以获得一个新工具的额外奖励。我认为掌握Linq2XXX(X是一个随机技术,而不是成人娱乐...虽然现在想想也不是个坏主意)的语法和方法将成为您使用Linq处理对象集合的技能集的重要补充。
但最终,像NHibernate这样的东西会更适合您的长远发展。
看看为什么它在改变,并尝试预测和概括即将到来的变化类型,以便它们不会破坏您的代码
框架可能使适应变化更容易,但深入分析将具有长期效益