首先带有Dynamics Navision表的实体框架代码

问题描述 投票:0回答:1

我有一个项目,需要使用现有数据库设计代码优先实体系统。数据库中的这些现有表不仅仅是任何表,它们都是由Microsoft的ERP工具“ Dynamics Navision”创建的。 Navision工具保存不同的公司信息,并为每个公司创建不同的表。假设有3种类型的表;

  • TableX
  • TableY
  • TableZ

还有3个不同的公司;

  • CompanyA
  • CompanyB
  • CompanyC

该工具根据上述组合创建了9个不同的表格。它仅复制所有表,并在表名中添加带有公司名称的前缀。最后,我们的数据库如下:

  • CompanyA $ TableX
  • CompanyA $ TableY
  • CompanyA $ TableZ
  • CompanyB $ TableX
  • CompanyB $ TableY
  • CompanyB $ TableZ
  • CompanyC $ TableX
  • CompanyC $ TableY
  • CompanyC $ TableZ

到目前为止我做了什么?

如您所见,在实体框架方面有机会简化此体系结构。为此,我为TableA,TableB,TableC创建了3个实体类,并在运行时让用户选择一个公司,并根据所选公司,用自定义TableAttribute反映了我​​的实体类,其中表名称以公司名称为前缀。我现在不打算提供有关如何实现它的详细信息(但是您可以在本文中找到实现的详细信息: LINK),但是到目前为止,到目前为止,我已经成功地应用了所有前面的步骤,并且我设法使所选公司的表名称保持动态。但是,还有另一个问题。

我的问题是什么?

问题是,即使我设法创建了一个系统,在运行时可以更改实体类的表名属性并访问目标公司表,也无法保证共享具有不同公司名前缀的重复表%100相同的内场架构。例如,CompanyA$TableX可以有5个字段,而CompanyB$TableX可以有6个字段,其中前5个字段与CompanyA $ TableX的字段相同,但最后一个字段是多余的。让我们对其进行可视化;

[CompanyA$TableX的表格字段;

  1. ID
  2. 名称
  3. 地址
  4. 电话号码

[CompanyB$TableX的表格字段;

  1. ID
  2. 名称
  3. 地址
  4. 电话号码
  5. 电子邮件

如您所见,Email字段是多余的,但是表名相同(TableX),只是公司不同,在我的系统中,它们共享相同的实体类,并且在运行时确定的公司名称与我之前提到过。

所以,我想知道如何实现动态变化。我如何只能拥有一个实体类,却如何根据所选公司在该类的领域中保持动态。我想知道在技术上是否可行,以及如何实现。预先感谢。

c# entity-framework microsoft-dynamics navision
1个回答
0
投票

您对Nav的说法是不正确的。无法在Nav中创建将在每个公司中具有不同结构的相同表。即使是现代的扩展体系结构也不会给您带来这种结果。

© www.soinside.com 2019 - 2024. All rights reserved.