文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ADO.NET如何自定义对象

2023-06-17 20:30

关注

这篇文章主要讲解了“ADO.NET如何自定义对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ADO.NET如何自定义对象”吧!

ADO.NET实体框架提供了相应的工具,以便根据 实体数据模型 (EDM) 的概念性架构定义语言 (CSDL) 文件自动生成对象层。可以对这些数据类进行不同程度的自定义,具体取决于应用程序的要求。您也可以修改自己的自定义数据类,以将其用于 EDM。当您从现有应用程序升级数据类以使用 实体框架 时,或者当您希望对创建数据类的方式进行更多控制时,这很有用。

扩展分部数据类

EDM 中定义的类型不像面向对象编程中使用的类那样具有关联的方法。相反,它们只包含 EDM 中定义的属性。您可以通过扩展已生成的分部数据类向对象中添加功能。在通过 实体数据模型工具生成数据类时,将以分部类的形式实现这些数据类。分部类将类的定义拆分到两个或更多个源文件中。每个源文件包含类定义的一部分,当编译应用程序时,将组合所有部分。

拥有分部类后,您能够用单独源文件中的自定义方法和属性扩展这些类,而无需担心在已生成的文件刷新时丢失您的自定义。

自定义业务逻辑

在使用生成的数据类时,可以在某些对象服务操作(例如,更改属性或关系)过程中调用自定义业务逻辑。此业务逻辑可能包括在更改属性或调用 SaveChanges 时创建附加验证或登录。通过处理由对象服务引发的事件,或者通过定义在更改属性时调用的自定义分部方法,可以调用自定义业务逻辑。

自定义数据类

有某些情况下,只通过添加方法和属性来扩展分部类可能无法提供足够的灵活性。假定现有一个 .NET Framework 应用程序使用 ADO.NET 将数据库中的数据加载到 CLR 对象中,以供该应用程序使用。这些对象可能包含必须保留在对象层中的有价值的自定义和业务逻辑。这些自定义可能会妨碍您将应用程序迁移为使用实体框架。您可能还希望对实体类型进行更多的控制,而不仅仅是扩展生成的分部类。

将自定义数据类与 EDM 一起使用的建议方式是从 EntityObject 继承。Entity Framework 提供了一组接口,如果不能从 EntityObject 继承,或需要比框架更多的独立性时,可以实现这些接口以将自定义数据类用于 EDM。在使用自定义数据类时,必须向自定义数据类和属性应用属性,并且在更改属性时通知对象上下文。

生成的数据类从 EntityObject 或 ComplexObject 继承。如果您必须将自定义数据类与 EDM 一起使用,建议的方式是修改您的数据类,以便从这两个基类继承。通过这种方式,自定义数据类将受益于 EntityObject 所提供的更改跟踪和关系管理功能。

在从 EntityObject 和 ComplexObject 继承时,请记住以下要点:
◆类和属性名称必须与 EDM 的概念性架构定义语言 (CSDL) 文件中定义的实体类型和属性名称相匹配。如果这些名称不匹配,您必须更改数据类和属性的名称,或者更新 CSDL 和关联的映射规范文件MSL 中的名称。有关更多信息,请参见如何:自定义实体数据模型以使用ADO.NET自定义对象(实体框架)。
◆CSDL 中定义的实体类型的每个属性,都必须在自定义数据类中有一个关联的属性。自定义数据类可以具有其他未映射到 CSDL 中定义的属性的属性。
◆您必须向自定义数据类和属性应用属性。这些属性在对象和 CSDL 之间提供显式映射。
◆若要使对象服务能够跟踪对ADO.NET自定义对象进行的更改,必须使用 EntityObject 更改报告方法按照特定模式报告这些更改。
◆Entity Framework 工具还生成其他能够简化对象编程的类。对自定义数据类使用此代码很有用。有关更多信息,请参见如何:将对象服务用于自定义对象(实体框架)。
◆在从 EntityObject 继承时,必须通过从 ComplexObject 继承来实现复杂类型。

感谢各位的阅读,以上就是“ADO.NET如何自定义对象”的内容了,经过本文的学习后,相信大家对ADO.NET如何自定义对象这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯