c# - 实体类的跨 DDL 扩展

标签 c# .net entity partial-classes derived

我想要实现的目标:

  • 包含 EntityClasses 的服务程序集(项目)- 纯数据。
  • 为自己的目的扩展这些实体的 GUI 程序集 - GUI 的运行时信息。

我尝试了什么:

  • 推导(Gui定义类ExtendedEntity : Service.BaseEntity)

    对我来说似乎是最常见也是唯一可行的方法,但是:

    从服务中检索数据后将 Service.BaseEntity 转换为 ExtendedEntity 很痛苦。可以通过使用反射基于基本实体实例生成新的 ExtendedEntity 实例来“解决”这个问题,但这不是“正确”的解决方案。

  • 部分类

    正是我要找的,除了它不能跨汇编工作这一事实。

如果有任何提示可以帮助我找到合适且干净的解决方案,而无需反射作弊,我将不胜感激 =)

最佳答案

这不是一个直接的答案,但您可能需要多考虑一下您的设计。为什么您的 GUI 需要深入了解数据存储机制?通常我们会非常努力地确保 UI 和数据访问是松散耦合的,因此我们可以对其中任何一个进行更改而不必担心破坏已经工作的内容。您希望实现的设计可能会在以后导致无法预料的问题。

一种适用于此类事物的常见模式称为存储库模式。本质上,服务组件(存储库)将包含将数据插入和推出特定数据存储所需的所有知识。数据的“形状”是众所周知的,并且在 GUI 和存储库之间共享。服务组件将使 CRUD 操作对 GUI 可用,而 GUI 将保存对存储库的引用,并调用存储库上的方法来获取、创建和更新它需要的数据。

这里有一些链接,可以帮助您了解松散耦合、存储库模式和依赖项注入(inject)的概念。

Cohesion and coupling

What is dependency injection

What's a good repository pattern tutorial

关于c# - 实体类的跨 DDL 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685999/

相关文章:

c# - 是否可以仅使用一次分配来连接字符串列表?

c# - ASP.NET Web 应用程序无法使用自定义 Bootstrap 正确显示内容

c# - 基于模式的字符串解析

c# - .net 的 Phalanger 和 php 库

javascript - 在javascript中获取超链接的值

mysql - ManyToOne 向 FOS_User_Bundle 用户表添加外部约束的问题

c# - 将方法参数验证代码重构为Contracts - 语句反转问题

c# - Sitecore 在 SavedItemRemoteEvent 上出错还有其他人吗?

entity-framework - 更新 Entity Framework 对象

nhibernate:如何设置使用数据库中数据的实体验证?