C# 非xml环境中针对linq的解耦通用键值访问

C# 非xml环境中针对linq的解耦通用键值访问,c#,linq,serialization,decoupling,objectlistview,C#,Linq,Serialization,Decoupling,Objectlistview,早上好 我不是一个受过教育的计算机科学家,所以请忽略任何不光彩的术语滥用 在我的框架中,一个名为Record的基本表单以对话框的形式打开表单RecordDetail。例如,RecordClient扩展记录并包含客户端数据和与客户端相关的子数据的选项卡式列表,RecordDetail扩展一个子数据行,以便完全基于反射和显示覆盖进行详细编辑,这些覆盖存储为针对DataContext使用的自定义属性。Record是应用程序的子类,但我认为没有必要将RecordDetail子类化。除在列出的子对象中显示

早上好

我不是一个受过教育的计算机科学家,所以请忽略任何不光彩的术语滥用

在我的框架中,一个名为Record的基本表单以对话框的形式打开表单RecordDetail。例如,RecordClient扩展记录并包含客户端数据和与客户端相关的子数据的选项卡式列表,RecordDetail扩展一个子数据行,以便完全基于反射和显示覆盖进行详细编辑,这些覆盖存储为针对DataContext使用的自定义属性。Record是应用程序的子类,但我认为没有必要将RecordDetail子类化。除在列出的子对象中显示外键编辑外,此操作有效

我必须使用和Linq;我不能使用WPF/XML。因为我对非连续数据库连接执行序列化技巧,所以在克隆数据以管理状态时会丢失外键对象。ObjectListView需要外键对象进行显示和常规操作。我知道Hibernate,但Linq让我不知所措:

在与RecordDetail的对话框关闭后,如何从记录内访问外键对象,而不耦合框架和特定于应用程序的类

就是

Type rowType = row.GetType();
IDomain workDamnit = (IDomain)dataContextReflectedFromRowType.GetTable(rowType).Where(x => x.PrimaryKey == 1).SingleOrDefault();
其中PrimaryKey封装了主键属性,失败发生在GetTable、where和SingleOrDefault之间


在这个晴朗的星期天早上,任何观点都值得欣赏。

事实上,我决定在子类记录表单访问的池中隐藏外键对象