'POCO'的定义

sak*_*aku 228 class poco

有人可以定义'POCO'的含义吗?我越来越频繁地遇到这个词,我想知道它是否只是关于普通课程还是更多意味着什么呢?

Dav*_*dro 187

"普通老C#对象"

只是一个普通的类,没有描述基础结构问题的属性或域对象不应具有的其他责任.

编辑 - 正如其他答案所述,它在技术上是"普通旧CLR对象",但我和David Arno评论一样,更喜欢"普通旧类对象"以避免与特定语言或技术的联系.

要澄清:换句话说,它们不是从某些特殊的基类派生出来的,也不是为它们的属性返回任何特殊类型.

  • 我认为POCO是一个普通的老班,并不试图成为流行模式的一部分.不过我也喜欢你的答案. (15认同)
  • 在我个人看来,这并没有真正给出一个好的答案,因为有人也很好奇.好的,所以没有描述基础设施的属性(你的意思是属性和基础设施......例如数据库连接?什么?请举例).您的域对象应该承担哪些责任?那么POCO基本上是域对象(BL对象)?所以真正的POCO只是业务层对象/域对象的另一个缩写,它们都是同样的死的东西.POCO /业务层对象/域对象==同样该死的东西,对于同一个概念只有3个不同的首字母缩略词吧? (14认同)
  • 这个回复绝对没有告诉我它在现实世界中的含义......只是一个任何人都可以在维基百科上查找的定义.关于一些示例POCO类怎么样?以及为什么他们是POCO的背景. (4认同)
  • 例如,您编写的仅继承自“System.Object”的类是 POCO。如果它继承自`ExternalFramework.OrmMapperBase`或类似的东西,它就不再是POCO了。 (2认同)

Nic*_*ise 45

大多数人都说过 - 普通的旧CLR对象(与早期的POJO - 普通旧Java对象相对)

POJO来自EJB,它要求您从特定的父类继承诸如值对象之类的东西(从ORM或类似的查询中获得的内容),所以如果你想从EJB迁移(例如到春天),你被塞满了.

POJO只是不强制继承或任何属性标记的类,使它们在你正在使用的任何框架中"工作".

除了在.NET中,POCO是相同的.

通常它会在ORM周围使用 - 较旧(以及一些当前版本)要求您继承特定的基类,这会将您与该产品联系起来.新的不要(nhibernate是我所知道的变种) - 你只是创建一个类,用ORM注册它,然后你就关闭了.更容易.

  • .Net 3.5 sp1 ORM示例:Entity框架要求类继承自某个框架类.LINQ to SQL没有此要求.因此,LINQ to SQL适用于POCO,而实体框架则不适用. (3认同)
  • 只是为了完整起见,CLR 为公共语言运行时——.net 虚拟机。 (2认同)

小智 20

我可能错了.但无论如何,我认为POCO是普通的旧 CLR对象,它来自POJO普通的旧Java对象.POCO是一个保存数据且没有行为的类.

这是一个用C#编写的示例:

class Fruit 
{
    public Fruit() { }

    public Fruit(string name, double weight, int quantity) 
    {
        Name = name;
        Weight = weight;
        Quantity = quantity;
    }

    public string Name { get; set; }
    public double Weight { get; set; }
    public int Quantity { get; set; }

    public override string ToString() 
    {
        return $"{Name.ToUpper()} ({Weight}oz): {Quantity}";
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。它提供了实际的解释(没有行为),还提供了一个示例以更好地了解POCO的外观。 (4认同)
  • 我认为 POCO 没有行为。它只是一个类,不依赖于 .Net 之外的其他框架/库。即 File 类是 POCO,但 DbContext 不是,因为依赖于实体框架。 (3认同)

Rob*_*ble 9

POCO代表"Plain Old CLR Object".

  • 正如我的高中电力老师会说的那样,"......和橘子味道橙色" (27认同)
  • ooooook?那么这在上下文或现实世界中意味着什么呢? (24认同)
  • 是的,但这篇文章看起来更像是一个评论,而不是一个答案,因为它没有完全回答这个问题. (7认同)

Dav*_*rno 7

为了添加其他答案,POxx术语似乎都来自POTS(普通老式电话服务).

POX,用于定义简单(普通旧)XML,而不是与REST,SOAP等相关的复杂多层内容,是一个有用且模糊的有趣术语.PO(选择插入语言)O术语相当磨损笑话.


Har*_*raf 6

在.NET中,POCO是一个"普通的旧CLR对象".它不是'普通的旧C#对象'......


bas*_*ero 5

在Java土地中,通常"PO"表示"普通老".其余的可能很棘手,所以我猜你的例子(在Java的上下文中)是"普通的旧类对象".

其他一些例子

  • POJO(普通的旧java对象)
  • POJI(普通的旧java界面)