代码之家  ›  专栏  ›  技术社区  ›  sestocker

针对频繁更改数据库的最佳.NET解决方案[已关闭]

  •  8
  • sestocker  · 技术社区  · 16 年前

    我目前正在设计一个小型CRUD应用程序。他们的数据库乱七八糟,在未来6个月到一年内将频繁变化。对于我的数据层,您会推荐什么:

    1) ORM(如果是,哪一个?)

    2) Linq2Sql

    4) 参数化查询

    我真的需要一个足够动态(既快又简单)的解决方案,在这里我可以频繁地替换表和添加/删除列。

    注意:我在ORM方面没有太多经验(只有一点亚音速),通常倾向于使用存储过程,所以这可能是最好的方法。我很想学习Ling2Sql或NHibernate,如果它们中的任何一个能够考虑到我上面描述的情况的话。

    12 回复  |  直到 13 年前
        1
  •  6
  •   lomaxx    16 年前

    这里需要注意的一个关键问题是,如果数据库模式经常更改,那么您希望具有某种级别的编译时类型安全性。我发现这是NHibernate的一个问题,因为它使用xml映射文件,所以如果您更改了数据库模式中的某些内容,直到运行时您才知道映射被破坏了。

    存储过程也会出现问题。

    在编译时更改模式时,使用Linq2Sql将使您能够准确地知道代码的中断位置。对于我来说,如果我使用的是一个频繁变化的模式,那么这将优先于其他任何东西

        2
  •  5
  •   Jon Galloway    16 年前

    直到数据库模式变得非常复杂,我们达到了ActiveRecord模式的极限,它才工作得很好,但只要模式不是非常复杂,它就工作得很好。一旦模式稳定,您就可以切换,以便只在需要时构建DAL。

        3
  •  2
  •   komma8.komma1    16 年前

    你肯定想用ORM。任何ORM都可以,但您需要能够生成强类型类的东西。当从表中添加、修改或删除字段时,您希望能够重新生成这些类,并且只处理修复编译时错误。如果使用动态模型,可能会出现许多严重的运行时错误。这是非常重要的!我是世界的一部分 MyGeneration sourceforge上的开发团队,我认为这是解决您问题的一个很好的方法。您可以生成Doodas、NHibernate、EasyObject、EntitySpace等。如果您想使用更昂贵的解决方案,请使用 CodeSmith LLBLGen Pro

        4
  •  1
  •   Jon Limjap    16 年前

    NHibernate ,但前提是您可以采用对象优先的方法,在该方法中定义类,然后在映射文件中定义所需的表结构,然后使用NHibernate的内置模式生成类创建数据库模式。

    我发现了另一种方法(例如,你有一堆表,然后你将你的对象设计建立在这些表的基础上) MyGeneration +尽管我对生成的类不太满意(主要是因为我对真正的面向对象编程非常严格),但NHibernate仍然可以工作。

        5
  •  1
  •   Webjedi    16 年前

    如果我处在你的位置,我会尝试利用我所知道的(存储过程)与Linq2Sql。Linq2Sql仍然可以使用存储过程,但是您还可以在腰带上放一个新工具。我认为掌握Linq2XXX(X是一种随机技术,而不是成人娱乐……现在我认为这是一个不错的主意)语法和方法将是对您的技能集的一个很好的补充,在一组对象上使用Linq是非常好的。

        6
  •  1
  •   Mike Griffin Mike Griffin    16 年前

    HERE

    无需注册,也可以在Visual Studio下运行。

        7
  •  1
  •   Ron H    14 年前

    简直太棒了。根据需要更改数据库。按一下按钮,砰。所有更改都已完成。无需更改自定义代码。我喜欢它。

        8
  •  1
  •   TheEruditeTroglodyte    14 年前

    应用程序有多简单?如果我要在几个月内处理模式/设计的东西,而不是真的担心实际的应用程序。我将考虑使用EDM和动态数据实体Web应用程序项目。在我看来,这是你用最少的努力就能完成的。这使您能够专注于模式、数据和其他groovey内容。我希望这次不会有太多的负碰撞!

    下面是“新建项目”对话框的外观 this

        9
  •  0
  •   Aidan Ryan    16 年前

        10
  •  0
  •   Davide Vosti    16 年前

    如果数据库模式经常更改,则首选实体框架而不是LINQ2SQL。如果模式发生变化,则必须使用L2S
    1) 删除并重新添加表格(取消自定义)
    2) 手动修改模型(如stackoverflow中所述)

    EF是L2的超级集合,为您提供了更大的使用灵活性和dbms独立性

        11
  •  0
  •   Steven A. Lowe    16 年前

    看看它为什么在变化,看看你是否能够预测和概括即将发生的变化,这样它们就不会破坏你的代码

    一个框架可能会使适应变化变得更容易,但更深入的分析会带来更长期的好处

        12
  •  0
  •   Marek Blotny    16 年前

    任何解决方案都可以工作,您真正需要的是一组测试,这些测试将确保插入、选择、更新和删除等基本操作正常工作。这样,您只需运行测试并检查映射是否是最新的。