代码之家  ›  专栏  ›  技术社区  ›  Harper Shelby damiankolasa

窗体和构造函数

  •  4
  • Harper Shelby damiankolasa  · 技术社区  · 17 年前

    我正在研究.NET ORM实现,我有一个非常重要的问题——是否有任何.NET ORM实现不需要数据库中每个字段的公共属性?当我看到这样的例子 this 一个小铃铛在我脑中响起。我 坚决地 相信封装,并且被迫打开我的对象的和服,只是为了让它们与持久性框架很好地工作,这就给了我heebie-jeebies。所有窗体都需要这种可访问性吗?如果不是, 拜托 给我举些不需要的例子!

    7 回复  |  直到 10 年前
        1
  •  6
  •   Steve Willcock    17 年前

    nhibernate支持为班级成员提供多个访问策略。公共属性实际上是默认的,但是您可以告诉nhibernate直接访问类的字段。

    例如

    <property name="CustomerName" access="field.camelcase-underscore" />
    

    将指示nhibernate在类中使用这样声明的字段:

    protected string _customerName;
    
        2
  •  1
  •   Daniel Brückner    17 年前

    实体框架也支持这一点。您可以为getter和setter分别为每个属性定义访问修饰符。

        3
  •  1
  •   traskjd    17 年前

    Mindscape Lightspeed仅绑定到字段-仅为要公开的字段添加属性(这是 只有 它的工作方式是为了表达封装的原因)。当然,工具将默认提供属性,但可以全部关闭。

    Mindscape LightSpeed O/R Mapper

        4
  •  0
  •   Mike Robinson    17 年前

    看看顾司各特的书呆子晚餐教程。Linq和MVC允许您创建一个业务层,它将DB对象包装在公共和私有属性中。

    http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx

        5
  •  0
  •   codeulike    17 年前

    您的意思是您希望将私有或受保护的成员映射到数据库,而不是将它们全部公开?我用过的一个可以做到这一点的ORM是 Gentle.NET . 它是稳定的,但这些天没有得到太多的更新。

        6
  •  0
  •   Mark    16 年前

    哈珀-我对linq-to-sql的感觉几乎是一样的,直到我意识到这一切都是关于你对orm的看法…把linq2sql看作是“强类型ADO.NET提供程序”…

    如果您只想“快速查看”几个字段,那么Linq投影将向您返回只包含您所关联的字段的匿名类型。这意味着 实体类 与查询的网络和内存性能无关。

    在这个范围的另一端,数据上下文(或其他表单中的UnitOfWork)通常是您尽可能快地使用和处理的东西。因此,他们所生成的实体应仅限于“数据持有者”的角色。换一种说法,如果你想构建复杂的或 长寿 对象,将它们与LINQ实体(即不同的类)分开设计,只需使用L2s填充/建立这些对象。

        7
  •  -1
  •   Lucas    17 年前

    linq to sql可以绑定到私有字段,但它可以 但是,完全支持私有的无参数构造函数。