实体框架:获取存储库中的子类对象

2024-04-22

我有与下面列出的数据库表对应的以下模型。

经理就是雇员。会计师也是雇员。

  1. 让所有管理器都进入存储库的最佳方法是什么?如何实现GetAllManagers()方法?
  2. 这是正确的TPT吗?

CODE

MyRepository.MyEmployeeRepository rep = new MyEmployeeRepository();
List<Employee> e = rep.GetAllEmployees();



public class MyEmployeeRepository
{
    private string connectionStringVal;
    public MyEmployeeRepository()
    {
        SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
        sqlBuilder.DataSource = ".";
        sqlBuilder.InitialCatalog = "LibraryReservationSystem";
        sqlBuilder.IntegratedSecurity = true;

        // Initialize the EntityConnectionStringBuilder.
        EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
        entityBuilder.Provider = "System.Data.SqlClient";
        entityBuilder.ProviderConnectionString = sqlBuilder.ToString();
        entityBuilder.Metadata = @"res://*/Test.csdl|res://*/Test.ssdl|res://*/Test.msl";

        connectionStringVal = entityBuilder.ToString();


    }


    public List<Employee> GetAllEmployees()
    {

        List<Employee> employees = new List<Employee>();
        using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal))
        {
            foreach (MyEntityDataModelEDM.Employee p in context.Employees)
            {
                employees.Add(p);
            }
        }

        return employees;
    }

    public List<Manager> GetAllManagers()
    {

        List<Manager> managers = new List<Manager>();
        using (var context = new MyEntityDataModelEDM.LibraryReservationSystemEntities1(connectionStringVal))
        {


        }

        return managers;
    }



}

EDIT

这种模式有缺点。应考虑以下事项:

  1. 可以在没有任何角色的情况下创建员工。
  2. 一名员工可以担任多个角色。

Just do:

return context.Employees.OfType<Accountant>().ToList()

然而,这是一种非常糟糕的员工建模方式。如果会计师换工作,您需要杀死并重新创建该对象。

请参阅我的回答域模型中的继承与枚举属性 https://stackoverflow.com/questions/4254182/inheritance-vs-enum-properties-in-the-domain-model/4254783#4254783.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架:获取存储库中的子类对象 的相关文章

随机推荐

  • 将 csv 数据写入命名空间内的矩阵时,TCL 抛出无效命令名称

    这是一个奇怪的问题 我似乎无法弄清楚 我正在使用 TCL 8 5 我正在尝试使用以下命令将数据从 CSV 文件读取到矩阵中csv read2matrix命令 然而 每次我这样做时 它都会说我试图写入的矩阵是无效命令 我正在做的事情的片段 p
  • 嵌入式 JavaScript 中的特殊字符

    我有一些嵌入在 html 文件中的 javascript 如下所示 它有一条像这样的线 if os Mac br Safari br Chrome 一切顺利 这意味着脚本可以工作 但是验证者 http validator w3 org 正在
  • 在 App Engine 标准 python 中使用 Google Stackdriver 日志时出错

    我的堆栈 谷歌应用程序引擎标准Python 2 7 Goal 要在 Google Stackdriver Logging 中创建命名日志 https console cloud google com logs viewer https co
  • 如何将这些数据存储在cookies中?

    假设我有一些文本框 文本区域 其中的值必须存储 这些值必须在按键时存储 以便当用户过早关闭页面时不会丢失数据 这是我当前的代码 使用cookie function createCookie name value days if days v
  • 箭头呢?

    阅读有关 Haskell 各种类别主题课程的各种教程 我们发现诸如Monoid Functor Monad等等 所有这些都有数十个实例 但由于某种原因 当我们到达Arrow 只有两个实例 函数和 monad 在这两种情况下 使用Arrow与
  • 如何使用 Go 的 flag 包打印位置参数的用法?

    鉴于这个简单的 Go 程序只需要一个命令行参数 我该如何改进它以便flag Usage 给出有用的输出 package main import flag fmt os func main flag Parse if len flag Arg
  • Python中不可变对象的类型是什么(对于mypy)

    我总是用mypy in my Python程式 类型是什么 来自typing 对于不可变对象 那些可以用作字典键的对象 回到上下文中 我想编写一个从字典继承的类 并且我有以下代码 class SliceableDict dict def g
  • Pthreads 与 OpenMP

    我正在使用 Linux 用 C 创建一个多线程应用程序 我不确定是否应该使用 POSIX 线程 API 还是 OpenMP API 使用两者有何优缺点 Edit 有人可以澄清这两个 API 是否创建内核级 or 用户级线程 Pthreads
  • 获取特定时区的当前时间

    我有一个具有不同时区的日期和时间格式的数据框 我想将其与该时区的当前时间进行比较 所以我想在下面的 日期和时间 列中添加 1 小时 然后将其与该时区的当前时间进行比较 就像第一个一样 时区是 EDT 当前时间是 2017 07 18 10
  • Java 枚举和 Switch 语句 - 默认情况?

    对于建议抛出异常的人 抛出异常不会给我带来编译时错误 它会给我带来运行时错误 我知道我可以抛出异常 我宁愿在编译期间死也不愿在运行时死 首先 我使用的是 eclipse 3 4 我有一个数据模型 其模式属性是枚举 enum Mode on
  • Windows 上的异步子进程

    首先 我要解决的总体问题比我在这里展示的要复杂一些 所以请不要告诉我 使用阻塞线程 因为如果没有公平 公平的重写 它就无法解决我的实际情况重构 我有几个不需要我修改的应用程序 它们从标准输入获取数据 并在发挥其魔力后将其输出到标准输出 我的
  • WordPress 树枝模板短代码不显示

    我在 Wordpress 中使用 Symfony Twig 模板 一切运行良好 除了我无法在页面模板中显示任何短代码 我正在尝试使用 Contact form 7 插件显示联系表单 短代码是这样的 contact form 7 id 123
  • 无法让 Karaf 4.2.6 使用 log4j2 和 JsonLayout 作为布局类型进行日志记录

    我一整天都在做这件事 但在尝试了这么多组合后却没有让它发挥作用 归根结底 我正在寻找从 Karaf 获取 JSON 日志记录的明确步骤列表 我什至浏览了 Maven Karaf 插件源代码 试图解决这个问题 尽管也许我看的还不够远 我正在使
  • 将特定选定的列提取到新的 DataFrame 作为副本

    我有一个包含 4 列的 pandas DataFrame 我想创建一个new数据框only有三列 这个问题类似于 从数据框中提取特定列 https stackoverflow com questions 10085806 extractin
  • 使用导航组件设置 BottomNavView 后,Jetpack Compose TopAppBar 闪烁

    使用 Jetpack Compose 应用程序进行工作BottomNavigationView和导航组件 我对活动内的底部栏进行了常规设置 val navHostFragment supportFragmentManager findFra
  • SQL Server 更新分组依据

    我尝试在 MS SQL 上执行此操作 但仅在 Group by line 处返回错误 update temp Set Dos Count 1 From Temp Table2010 s where Id s Total and s tota
  • 在 php 中上传文件大小 > 5MB 时出错?

    我上传的文件大小 gt 5MB 和配置php ini 但是当上传文件是结果时error File Error size ini 如何配置 还有另一个配置条目会影响此行为 post max size
  • Windows 服务恢复未重新启动服务

    我将 Windows 服务的恢复配置为在失败后延迟一分钟重新启动 但我从未真正重新启动服务 即使有最明显的错误 我确实在事件查看器中收到一条消息 无法在源 MyApp exe 中找到事件 ID 1 的描述 本地计算机可能没有必要的注册表信息
  • pip install ortools:没有匹配的发行版 - Alpine

    在 Docker 中 我尝试运行 pip install ortools 但找不到 其他 pip 安装包可以完美运行 我在 Dockerfile 中使用 FROM python 3 6 8 alpine bash 4 4 pip insta
  • 实体框架:获取存储库中的子类对象

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo