1

我一直在寻找这个问题的答案。虽然我看过很多类似的帖子,但似乎都以“您需要直接从 XML 中读取映射数据”来回答,但我看不到如何做到这一点的示例。

我使用的是 EF 4.1,数据库优先和 Dbcontext。我正在尝试实现一个审核过程,这是通过在我的自定义上下文中覆盖 SaveChanges 来完成的。我查询状态管理器以撤回修改的记录等。所有标准的东西和很多很好的例子。

但是,我想写入数据库中的单个审计表,其中列名被更改以及该列所属的表名。目前我只是写出列记录的实体属性名称和表记录的实体类型。好的,这可行,但这并不完全正确,因为我应该写映射的列/表名而不是概念表示。到目前为止,我所有的实体都使用精确映射,即它们与数据库名称相同。但是,如果开发人员有一天从新表创建实体并为映射指定不同的名称,我的审计将不正确。例如,我将有一个不存在的列名的审计详细信息!另外,我知道您可以将一个实体映射到多个表。所以这就是我想要做的理想:

在实体属性级别,我想从数据库中找出列名及其所属的表名(包括完整架构 - 即对于表 MySchema.MyTable 我想写入审计表 MySchema.MyTable 不只是我的表)。这个过程将保护审计过程从开发人员编辑映射名称,或从多个表创建实体等。

所有示例都说您需要使用 CSSpace 数据集,因为它包含从数据存储 (SSpace) 到概念存储 (CSpace) 的关系信息。但这显然是在内部使用的,不能通过 metadataworkspace API 访问。相反,我应该直接阅读 CSSpace 的 XML 吗?如果是这样,这个文件在哪里(嵌入到程序集中?)我如何阅读它?我会认为我想做的是非常基本且明显的要求,但似乎很难做到。

非常感谢任何帮助!

4

1 回答 1

1

如果我正确理解您的问题,模型的 XML 就是模型文件 - 如果您右键单击模型并选择“打开方式 - XML 编辑器”,您可以看到它。

于 2012-06-15T08:46:04.583 回答