gpt4 book ai didi

c# - Entity Framework 中的类和接口(interface)层次结构?

转载 作者:可可西里 更新时间:2023-11-01 08:42:49 27 4
gpt4 key购买 nike

我有两个相关的类,它们共享一个公共(public)接口(interface)并且都存储在同一个基础数据库表中。但是, Entity Framework 生成一个公共(public)类,而我确实需要两个不同的类。我该如何解决这个问题?最好使用基类而不是接口(interface)吗?如何更改 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; }
}

最佳答案

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

  • EF 应该从存储中创建帐户实体
  • 然后创建 2 个子类(UserAccount 和 GroupAccount)
  • 在帐户的映射中,指定谓词“添加条件”
    • 将其映射到 AccountType(存储)字段为 1(或其他)的 UserAccount
    • 将其映射到 AccountType(存储)字段为 2(或其他)的 GroupAccount

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

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

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

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

等等

合理的演练是 here .

关于c# - Entity Framework 中的类和接口(interface)层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/353284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com