【问题标题】:Separate EDMX for grouping stored procedures单独的 EDMX 用于对存储过程进行分组
【发布时间】:2013-10-24 15:26:34
【问题描述】:

我有一个复杂的数据库,想知道为存储过程创建一个单独的 edmx 是否是一个好方法?我的想法是根据使用数据库的应用程序拥有多个 edmx 文件。这样每个应用程序就只能访问它需要的存储过程。

【问题讨论】:

  • 您的过程是否映射到实体?
  • 嗯,不,是的。这些过程是 Select 并且根据需要存在单独的自定义映射。然而,该程序甚至可以根据客户进行更改

标签: c# entity-framework edmx


【解决方案1】:

想到以下不分开EMDs 的原因

  1. 如果您的过程映射到您将写回数据库的实体,您将为自己创造更多的工作。
  2. 有 2 个EDMs 意味着有 2 个Context 选项用于可能没有逻辑分隔的选项。
  3. 拥有 2 个EDMs 似乎并没有以任何我能想到的方式看起来更干净。

【讨论】:

  • 我的沮丧是该应用程序将用于不同的客户,每个客户可能并且会有一些不同的逻辑。但目标是降低维护和增强的复杂性。我的问题是我从未见过有人将存储过程与 EF 中的表分开。我应该是第一个吗?
【解决方案2】:

我不明白为什么这会是个问题。

虽然@Khan 在某些情况下可能是正确的,但我相信如果您的项目足够大,那么您可以将它们分开,如果这有助于您保持井井有条。

我已经在我想要分离关注点的一些应用程序中做到了这一点。

我的解决方案有一个管理项目和一个用户项目,我添加了第三个作为包含两个 EDMX 的 DLL。 然后我在两个项目中添加了对同一个 dll 的引用。

混合数据访问层对我来说似乎不太合适。

对于管理员来说是这样的:

private void SomeAdminFunction()
{
    using (var db = new AdminEntities())
    {
      //Access all Admin Stored Procedures
    }
}

对于用户:

private void SomeUserFunction()
{
    using (var db = new UserEntities())
    {
          //Access all User Stored Procedures
    }
}

【讨论】:

  • 我认为 OP 是在询问是否有一个单独的 EDM 仅用于存储过程是一个好主意。不知道将 EF 用于存储过程是否是一个好主意。
猜你喜欢
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多