POCO 的行为和持久性无知

2023-12-20

根据我的阅读,POCO 类应该是持久性无知的,并且不应该包含对存储库的引用。

Q1.鉴于上述情况,我将如何填充 QuestionBlocks 集合?我读过 POCO 应该包含行为,这样你就不会以贫血模型结束,所以我有点困惑,如果没有坚持,应该如何做到这一点。如果是这样的话,那么您会在 POCO 中添加什么样的行为呢?

Ex:

 public class Survey
    {
        public int SurveyId { get; set; }
        public string Title { get; set; }
        public int BrandId { get; set; }
        public DateTime Created { get; set; }
        public List<SurveyQuestionBlock> QuestionBlocks { get; set; }

        [ResultColumn]
        public string Name { get; set; }


        /// <summary>
        /// Constructor
        /// </summary>
        public Survey()
        {
            Created = DateTime.Now;
            QuestionBlocks = new List<SurveyQuestionBlock>();
        }
    }

我想附加另一个观点: POCO 状态不依赖于任何框架的对象。 POJO 的 wiki 定义对我来说比 POCO 的定义更有意义:

  • http://en.wikipedia.org/wiki/Plain_Old_Java_Object http://en.wikipedia.org/wiki/Plain_Old_Java_Object

套用 POJO 的 wiki 定义,我们可以说 POCO 对象可能不会被迫:

一、扩展预先指定的类:

public class MyClass : AnyFramework.ObjectBase {...

二.实现预先指定的接口

public class MyClass : AnyFramework.IHaveDependency {...

三.包含预先指定的属性

[AnyFramework.KeyAttribute]
public class MyClass  {...

鉴于这种(几乎任何其他事情都是允许的)意思是关心对象状态。换句话说,如果对象将检查业务逻辑,正确.

但任何 POCO 对象都可以使用in一个框架。今天主要是负责持久化的ORM。所有应用程序层都使用 POCO 对象,而数据层负责加载和持久化(CRUD)。这主要是通过这些 POCO 对象的代理完成的。

因此,POCO 可以用作完整的业务对象,它可以照顾自己(检查集合项、属性的正确性......)。这使得它与DTO不同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

POCO 的行为和持久性无知 的相关文章

  • 如何防止 Json.NET 将枚举转换为字符串?

    下面的课 public class RequestSections RequestBase public RequestSections Command c Dictionary
  • 在c中用以下结构填充矩阵

    我有以下结构 typedef struct arr integer int size int arr arr arr integer arr arr integer alloc arr integer int len arr arr int
  • 请求的资源不支持 HTTP 方法“GET”

    我的路线配置正确 并且我的方法具有装饰标签 我仍然收到 请求的资源不支持 HTTP 方法 GET 消息 System Web Mvc AcceptVerbs GET POST System Web Mvc HttpGet public st
  • 到底什么是“位填充”或“填充位”?

    我只是在互联网上找不到任何关于 位填充 真正含义的详细解释 并且在 Stack Overflow 上也没有找到与位填充相关的线程的任何答案 我还搜索了 ISO 9899 1990 其中提到了 位填充 但没有根据我的需要进行解释 我在网上找到
  • 在 C# 中实例化 python 类

    我已经用 python 编写了一个类 我想通过 IronPython 将其包装到 net 程序集中 并在 C 应用程序中实例化 我已将该类迁移到 IronPython 创建了一个库程序集并引用了它 现在 我如何真正获得该类的实例 该类看起来
  • System.MissingMethodException:找不到方法?

    以前工作的 ASP NET WebForms 应用程序现在抛出此错误 System MissingMethodException 找不到方法 The DoThis方法位于同一个类上 它应该可以工作 我有一个这样的通用处理程序 public
  • ASP .NET MVC 5 - 客户地址一对一关系

    我在这里查看了论坛 实际上发现了一些类似的问题 但不是相同的问题 类似的解决方案没有给我正确的答案 我正在使用实体框架和代码优先方法来处理 ASP NET MVC 5 我想建立客户 gt 地址一对一关系的模型 我建模的是 客户等级 publ
  • 将 Visual Studio 2012 C++ 单元测试项目链接到 exe 会导致访问冲突

    我从现有的整体 exe 本机 Visual Studio 2012 项目开始 我想添加一个本机单元测试项目 根据http msdn microsoft com en us library hh419385 aspx objectRef ht
  • 将 Uploadify 与 Sharepoint 和 .net 结合使用

    我在共享点页面上有一些由 JQuery 生成的 html 我想在这个 html 中使用 uploadify 将文件上传到服务器 亚历山大 https stackoverflow com users 25427 alexander gyosh
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • string.empty 和 string[0] == '\0' 之间的区别

    假设我们有一个字符串 std string str some value is assigned 有什么区别str empty and str 0 0 C 11 及更高版本 string variable 0 如果字符串为空 则需要返回空字
  • 输入缓冲区刷新

    考虑下面的代码 include
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 如何解决素数函数的大O表示法?

    我正在尝试理解 Big O 表示法 很抱歉 如果我问的问题太明显了 但我似乎无法理解这一点 我有以下 C 代码函数 我正在尝试为其计算 Big O 表示法 for i 2 i lt 100 i for j 2 j lt i j j if i
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • 当应用程序未聚焦时监听按键

    我有一个应用程序 C 4 0 WPF 它是隐藏的 可以通过单击系统托盘图标或我创建的其他框架 停靠在左侧和最上面的小框架 来显示 My customer wants to add a new way to display the appli
  • System.Drawing.Icon 构造函数抛出“操作成功完成”异常

    在 Windows XP 计算机上 以下代码抛出 System ComponentModel Win32Exception 并显示消息 操作成功完成 System Drawing Icon icon new System Drawing I
  • 第一个随机数始终小于其余随机数

    我碰巧注意到 在 C 中 使用 std rand 方法调用的第一个随机数大多数时候都明显小于第二个随机数 关于 Qt 实现 第一个几乎总是小几个数量级 qsrand QTime currentTime msec qDebug lt lt q
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • GetActiveObject() 与 GetObject() -- MK_E_UNAVAILABLE 错误

    All 我在将一些 VBA 代码转换为 C 时遇到一些问题 我们有一个充当本地 COM 服务器的第 3 方应用程序 在我们使用的VBA代码中获取对象 获取对现有对象的引用 e g Set appHandle GetObject ProgId

随机推荐

  • 了解 openmp 中的折叠子句

    我遇到了一个包含崩溃子句的 OpenMP 代码 这对我来说是新的 我试图理解它的含义 但我认为我还没有完全理解它的含义 我发现的一个定义是 COLLAPSE https computing llnl gov tutorials openMP
  • JavaScript document.domain 未捕获 DOMException:阻止了具有原点的框架

    当我测试 SOP 时 我遇到了这种情况 两个文档与我预期的同一域有关系 当我尝试获取位置时 它会抛出错误 要重现该问题 Open https www google com https www google com 从控制台let opene
  • 为什么 '\x' 在 Python 中无效?

    我正在尝试使用 字符 使用 a b c 只是为了自己枚举Python将哪些字符解释为控制字符以及解释为什么 这是我发现的 a BELL b BACKSPACE f FORMFEED n LINEFEED r RETURN t TAB v V
  • Visual Studio 代码组织导入功能

    在 Visual Studio Code 1 23 版本中 添加了 组织导入 功能 这是一个非常有用的功能 因为它本身可以处理导入 但我希望能够对其进行配置 我想知道此功能是否可用的功能有 是否可以配置导入的排序顺序 我想在本地导入之前配置
  • Log4Net 不记录或出错

    我一直在尝试在我的 ASP NET Web 应用程序中获取 log4net 日志记录 但没有成功或任何明显的错误 我尝试使用具有以下配置的 ADONetAppender 附加程序
  • OSError:[Errno 24]打开的文件太多 - OS Mojave

    因此 我正在编写一个脚本来获取某个数据集 使用不同的随机种子对其进行 100 次采样 完成所有这些数据集 然后获取平均误差 但是 每当我尝试运行该脚本时 都会出现错误 OSError Errno 24 Too much open files
  • Drupal 通过代码在投票 API 中创建投票

    我正在编写一个自定义模块 我希望它做的部分工作是创建与节点关联的投票 我试图弄清楚如何从我的模块调用投票 API 我查看了文档 但它有点稀疏 这是我不久前编写的模块中的一个示例 while data db fetch object resu
  • EventTrigger 中的条件

    我可以检查事件触发器内的条件吗 我怎样才能只使用 XAML 来做类似的事情
  • 更改 Beaglebone Black 的 USB0 地址?

    我正在尝试更改 BeagleBone Black USB0 端口的静态 IP 地址 我知道这个线程之前已经打开过 更改 Beagle Bone Black USB0 的静态 IP https stackoverflow com questi
  • 在Stata中,如何组合不同宽度的箱线图?

    我正在尝试组合不同大小类别的多个箱线图 这是说明问题的示例 sysuse auto graph box mpg by rep78 rows 1 name g1 replace graph box mpg by foreign rows 1
  • python长度为k的0,1的所有可能组合[重复]

    这个问题在这里已经有答案了 我需要长度为 k 的 0 1 的所有可能组合 假设 k 2 我想要 0 0 0 1 1 0 1 1 我尝试过不同的功能itertools但我没有找到我想要的 gt gt gt list itertools com
  • 使用 Runtime.exec 从 Java 应用程序启动 JVM 进程?

    我希望能够从现有的 java 应用程序启动 Java 服务器进程并监视 stdoutput 和 stderror 并将该输出重定向到文件 是使用 Runtime exec 并将应用程序视为任何其他操作系统进程的最佳方法 还是有更适合新 JV
  • docker 中没有暴露和发布端口的连接

    我有一些中间件在 Docker 容器中运行 当我运行这个中间件时在我的主机上一切正常 当我在docker装有所有必要物品的容器暴露和发布的端口 Dockerfile EXPOSE 5672 15672 1337 1338 5556 3000
  • 网站安全问题

    我正在创建一个使用 perl 脚本 PHP MySQL 数据库和 HTML 的网站 我主要关心的是确保任何人都无法访问任何可以让他们访问我的信息的东西 我的意思是是否有人可以获取我的 perl 脚本并查看我的数据库信息 我了解 sql 注入
  • 如果我已经安装了 Anaconda 发行版并且想要使用其他文本编辑器,我还需要安装 Python 吗?

    我对 Python 和一般编程不太熟悉 过去几个月一直在 Windows 10 上使用 Anaconda 发行版的 Spyder IDE 它非常简单且易于下载和使用 我可以在IDE 让我很容易开始学习Python 我现在对 Python 和
  • Blazor - 当子组件 onclick 事件发生时执行父组件的方法

    我需要它onclick子组件中发生的事件 执行ShowMessage父组件传递的方法message字符串作为参数 以下代码不起作用 儿童剃须刀
  • 删除 NaN“单元格”而不删除整个 ROW(Pandas、Python3)

    现在我有一个这样的DF Word Word2 Word3 Hello NaN NaN My My Name NaN Yellow Yellow Bee Yellow Bee Hive Golden Golden Gates NaN Yell
  • 简单的Java“服务提供者框架”?

    我指的是 服务提供商框架 如中讨论的 这似乎是处理我遇到的问题的正确方法 我需要在运行时实例化几个类之一 基于String选择哪个服务 以及Configuration对象 本质上是一个 XML 片段 但是我如何让各个服务提供商 例如一堆默认
  • 将字符串中的正则表达式转换为 ruby​​ 中的正则表达式对象

    我将正则表达式作为用户的输入 并将值与该正则表达式进行匹配 但是 我遇到的问题是我收到的输入是一个字符串 例如 abc def i 我无法将其转换为正则表达式对象 如果尝试的话Regexp new string 它转义了所有字符 所以我得到
  • POCO 的行为和持久性无知

    根据我的阅读 POCO 类应该是持久性无知的 并且不应该包含对存储库的引用 Q1 鉴于上述情况 我将如何填充 QuestionBlocks 集合 我读过 POCO 应该包含行为 这样你就不会以贫血模型结束 所以我有点困惑 如果没有坚持 应该