当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《实体框架中的类和接口层次结构?》经验,为你挑选了1个好方法。

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

编辑: 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; }
}

Marc Gravell.. 14

这些数据是否有歧视?即AccountType定义它是哪种类型?如果是这样:

EF应该从存储中创建Account实体

然后创建2个子类(UserAccount和GroupAccount)

在Account的映射中,指定谓词"添加条件"

将它映射到UserAccount,其中AccountType(存储)字段为1(或其他)

将它映射到GroupAccount,其中AccountType(存储)字段为2(或其他)

然后,帐户类型应完全从Account对象中消失(如果不是,则取消映射).要获取UserAccount记录,请使用

 .Accounts.OfType()...

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

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

等等

这里有一个合理的演练.



1> Marc Gravell..:

这些数据是否有歧视?即AccountType定义它是哪种类型?如果是这样:

EF应该从存储中创建Account实体

然后创建2个子类(UserAccount和GroupAccount)

在Account的映射中,指定谓词"添加条件"

将它映射到UserAccount,其中AccountType(存储)字段为1(或其他)

将它映射到GroupAccount,其中AccountType(存储)字段为2(或其他)

然后,帐户类型应完全从Account对象中消失(如果不是,则取消映射).要获取UserAccount记录,请使用

 .Accounts.OfType()...

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

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

等等

这里有一个合理的演练.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有