实体框架中的类和接口层次结构?

2024-03-16

我有两个相关的类,它们共享一个公共接口,并且都存储在同一个基础数据库表中。然而,实体框架生成一个公共类,而我确实需要两个不同的类。我该如何解决这个问题?最好使用基类而不是接口吗?如何更改 EF 模型以提供映射到一张表的两个类?

Edit:AccountType 属性决定类的类型;用户或组。

一些简单的代码:

public interface IAccount
{
    string Name { get; set; }
    AccountType AccountType { get; set; }
}

public class GroupAccount : IAccount
{
    public string Name { get; set; }
    public GroupType GroupType { get; set; }
    public AccountType AccountType { get; set; }
}

public class UserAccount : IAccount
{
    public string Username { get; set; }
    public string Password { get; set; }
    public string Name { get; set; }
    public AccountType AccountType { get; set; }
}

这些数据是否存在歧视?即 AccountType 定义它是什么类型?如果是这样:

  • EF 应从存储创建帐户实体
  • 然后创建 2 个子类(UserAccount 和 GroupAccount)
  • in the mapping for Account, specify a predicate "add a condition"
    • 将其映射到 UserAccount,其中 AccountType(存储)字段为 1(或其他值)
    • 将其映射到 GroupAccount,其中 AccountType(存储)字段为 2(或其他值)

然后,帐户类型应该从帐户对象中完全消失(如果没有,则取消映射)。要仅获取 UserAccount 记录,您可以使用

 .Accounts.OfType<UserAccount>()...

在此模型中,Account 类可能应该是抽象的。接口内容可以通过分部类添加 - 即在单独的文件中定义:

partial class Account : IAccount {
   // extra code here
}

etc

合理的演练是here http://weblogs.asp.net/zeeshanhirani/archive/2008/08/16/single-table-inheritance-in-entity-framework.aspx.

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

实体框架中的类和接口层次结构? 的相关文章

随机推荐

  • 权限被拒绝:/var/www/abc/.htaccess pcfg_openfile:无法检查 htaccess 文件,确保它可读?

    大家好 我的网站使用 PHP 系统使用 ubuntu linux 即使正确配置了所有内容后 我在 apache 的 error log 文件中收到上述错误 我对此做了很多研究 但无法解决该问题 有人可以在这方面帮助我吗 以下是我的 htac
  • 将 .findBy() 与 Ember 数据填充的数组控制器结合使用

    背景 我正在编写一些功能测试来测试我的路由器是否正确导航和加载我的模型 到目前为止 一切都很好 即使考虑到这个问题 我已经创建了a fiddle http jsfiddle net magLM 2 供您欣赏 它不起作用 尽管有分叉 但我在
  • 方法不会覆盖 Eclipse 中的包可见方法

    从 Eclipse Java 编译器设置 方法不会覆盖包可见方法 包默认方法在不同的包中不可见 因此无法被覆盖 启用此选项时 编译器会以错误或警告的形式发出此类情况的信号 如何触发此警告 错误 我正在寻找代码示例 Foo java pack
  • 替换 dplyr 链的所有列中的 NA

    问题替换 dplyr 链中的 NA https stackoverflow com questions 21714867 replace na in a dplyr chain结果转化为解决方案 dt group by a mutate b
  • Kotlin 中的静态扩展方法

    如何在 Kotlin 中定义静态扩展方法 这可能吗 我目前有一个扩展方法 如下所示 public fun Uber doMagic context Context 可以在实例上调用上述扩展 uberInstance doMagic cont
  • 如何让我的设备振动?

    我正在使用 AS3 为 Android 制作 Flash 游戏 我希望用户知道他通过使设备振动一秒钟来按下按钮 有人可以向我解释如何才能做到这一点吗 我是否需要导入特定的类以及代码应该是什么样子 提前致谢 要使用振动扩展 AIR 应用程序将
  • ASP.NET MVC 单向路由

    是否可以在 Asp net MVC 的 RouteCollection 中定义一个路由 以便它只执行 URL 重写 部分并忽略 Html Actionlink 的 URL 生成 事实上 我想在控制器和操作之间添加一个关键字 控制器 关键字
  • 如何在没有 XIB 的情况下将选项卡栏添加到现有视图控制器

    I m 尝试避免使用 Interface Builder越多越好 目前 我通过代码创建了视图控制器 并通过代码更改了视图 我现在需要其中一个步骤将应用程序发送到一个新的观点标签栏 这也将使我改变观点 理想情况下 我要做的就是告诉当前视图控制
  • 如何保持React状态与MySQL数据库同步

    Scene 我正在构建一个简单的日历 Web 应用程序 它使用 React 作为前端 使用 MySQL 作为服务器后端 该应用程序在首次安装时从服务器检索所有事件的列表 将它们显示给用户并允许进行 CRUD 操作 一切都按预期进行 Ques
  • 从 ExtJS 请求到 node.js 时出现 CORS 问题。请求或响应标头不正确?

    我在网络内两个不同域之间向 Nodejs 服务器发出 ExtJS AJAX 请求时遇到问题 非常感谢任何帮助 当尝试从 ExtJS 客户端的 http 和 https 时 响应失败 但我本地的 Curl 通过 http 返回 200 OK
  • 在.NET / Visual Studio中定义TRACE常量

    在 Visual Studio 2010 中 如果您转到项目的属性并转到 生成 选项卡 则会有一个 定义 TRACE 常量 复选框 这相当于执行 define TRACE System Diagnostics Trace 的所有方法都有一个
  • 如何在 Android 中发送 vcard/contacts/?vcf var SMS 或 MMS?

    我想修改可以发送 contacts vcard vcf 文件 的Android源代码 彩信或短信 Android默认方式是通过蓝牙 我找了很多方法 但都行不通 我知道vcf格式是这样的 BEGIN VCARD VERSION 2 1 N l
  • 如何为 HPA 自动缩放指标启用 KubeAPI 服务器

    我使用的是 Kube 版本 v1 13 0 由于 Heapster 从 v1 11 开始就被贬值了 所以我一直坚持启用集群 Metrics 的 API 服务器来实现 HPA root kubectl get pods deployment
  • 安装 JSTL 会导致 org.xml.sax.SAXParseException: Prolog 中不允许内容

    在我的应用程序中 我使用 JSTL 但是当我在 Tomcat 中部署应用程序时 出现以下错误 SEVERE Parse Fatal Error at line 1 column 1 Content is not allowed in pro
  • ImportError:无法从“google.cloud”导入名称“tasks_v2”

    我正在尝试使用 GCP 文档中提供的 Google Cloud Tasks 代码示例 https cloud google com tasks docs creating http target tasks https cloud goog
  • Python 的 csv.reader(filename) 真的返回列表吗?看来并非如此

    所以我仍在学习Python 并且今天正在学习如何读取文件 csv 文件 我刚刚观看的课程告诉我 使用 csv reader filename 返回一个列表 所以我写了下面的代码 import csv my file open file na
  • 如何用PHP制作计算器?

    我想使用 PHP 来计算简单的代数表达式 例如 8 5 1 通过输入
  • iOS 11(Beta)中的webKit支持WebRTC吗?

    我有一个 URL 可以在 iOS11 测试版 上的 Safari 上正常工作 音频 视频也可以正常工作 但是 当我使用 WKWebView 加载此 URL 时 它会给我一个错误 不兼容的浏览器 当我在 WebKit 中检查浏览器版本时 它会
  • 批处理文件命令 PAUSE 不起作用

    我正在创建一个简单的批处理文件来帮助完成一些事情 并且我还打印了一些说明 我希望用户在退出之前看到这些说明 目前 窗口关闭得很快 所以我添加了PAUSE在文件末尾 但它不想工作 我查看了有关 SO 的其他问题 并检查以确保行结尾是CRLF我
  • 实体框架中的类和接口层次结构?

    我有两个相关的类 它们共享一个公共接口 并且都存储在同一个基础数据库表中 然而 实体框架生成一个公共类 而我确实需要两个不同的类 我该如何解决这个问题 最好使用基类而不是接口吗 如何更改 EF 模型以提供映射到一张表的两个类 Edit Ac