当前位置: 首页 > 知识库问答 >
问题:

在实体框架CodeFirst中创建我的模型时可以使用接口吗?

边明煦
2023-03-14

我是实体框架的新手,我正在练习代码优先。我的问题是我正在创建一个模型类,我想要这个类从另外两个类继承。例如,员工有名字、中间名、姓氏等个人信息。它也有一个联系信息,如地址,电话,电子邮件等。学生也有这些属性。我把这些信息分成两类的原因是,另一个实体也可以有联系人信息,但没有个人信息,如公司、学校、医院、仓库等。


    public class ContactInfo
    {
    public string Address { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    }


    public class PersonalInfo
    {
    public string Firstname { get; set; }
    public string Middlename { get; set; }
    public string Lastname { get; set; }
    }


    public class Employee : // This should be inheriting from PersonalInfo and ContactInfo
    {
    public int EmployeeID { get; set; }
    }


    public class Supplier : ContactInfo // Inheriting from ContactInfo and no PersonalInfo
    {
    public int SupplierID { get; set; }
    public string Name { get; set; }
    }



我想要做的是创建由Employee继承的接口(IPersonalInfo、IContactInfo),使其如下所示:


    public class Employee : IPersonalInfo,IContactInfo
    {
    public int EmployeeID { get; set; }
    }



这是一个好的做法吗?如果不是,我怎么能应付这种情况...谢谢!

共有1个答案

许兴文
2023-03-14

Ys,您必须在模型中定义继承。之后,确保定义一个/多个对一个/多个关系。参考这里的链接,很好的教程。

http://www.asp.net/mvc/tutorials/getting-start-with-ef-using-mvc/implementing-inherity-with-entity-framework-in-an-asp-net-mvc-application

 类似资料:
  • 问题内容: 我正在创建一个新的Cocoa Touch框架(MyFramework.framework),该框架将依赖Alamofire。该框架将用Swift编写。作为测试,我开始了一个新的Cocoa Touch Framework项目: 然后,在终端中,我执行了: 在此项目目录下。在新创建的Podfile中,我添加了以下内容: 再次,在终端中,我执行了: 并开始编码。 在我在单视图项目中使用MyF

  • 问题内容: 有没有一种方法可以在Markdown中创建在新窗口中打开的链接?如果没有,建议您使用哪种语法。我将其添加到我使用的markdown编译器中。我认为这应该是一个选择。 问题答案: 就Markdown语法而言,如果要详细说明,则只需使用HTML。 我见过的大多数Markdown引擎都允许使用纯旧的HTML,仅在这种情况下,即通用文本标记系统无法将其截断。(例如,StackOverflow引

  • 是否可以在EMF Ecore模型中使用枚举实现接口?在Java中可以有类似的内容:。我希望能够通过EMF生成这样的内容(顺便说一句,默认情况下EMF生成的所有枚举都实现)。 我找不到让生成的枚举实现特定接口的方法。我不能在ecore关系图编辑器和ecore模型编辑器中用枚举定义继承关系。在生成代码后,我可以手工将添加到枚举中,但每次再次生成代码时,它都会被覆盖。 现在,我所做的是每次修改模型中的枚

  • 所以我在我的一个设备上安装了iOS10。现在我无法在设备上运行我的应用程序,得到‘找不到开发人员磁盘映像’错误。 所以我下载了最新的Xcode8-beta版。现在我的代码不能编译了--我首先要把它转换成最新的语法。因此,在修复所有非自动转换语法问题的同时,我导入的框架也出现了错误:“module file was created by an旧版本的编译器”,据我理解,这意味着这个框架需要用当前版本

  • 当我继续我的在线教程,我遇到了这一课。我有一个接口和两个实现该接口的类。 null 这是因为所有的类都实现了接口Payve[]吗? 如果接口是在顶层层次结构中定义的,那么是否总是可以创建实现该接口的所有类的对象?

  • 在ASP中。NET MVC,用于创建具有实体框架的模型,表上的主键是必需的吗?