gpt4 book ai didi

c# - 在 Entity Framework 中使用派生类而不是抽象类型

转载 作者:行者123 更新时间:2023-11-30 22:35:41 24 4
gpt4 key购买 nike

我有第三方实体和两个派生实体:供应商和客户。
我有另一个名为 Worker 的实体,Supplier 是其成员:

public abstract class ThirdParty { }
public class Supplier : ThirdParty { }
public class Customer : ThirdParty { }

public class Worker {
public virtual string Name {get;set;}
public virtual Supplier Supplier {get;set;}
}

当我使用 Entity Framework 从数据库获取 Worker 时,出现以下异常:

There are no EntitySets defined for the specified entity type 'CompanyData.Supplier'. If 'CompanyData.Supplier' is a derived type, use the base type instead.

错误告诉我为 Supplier 成员使用 ThirdParty 类型而不是 Supplier 类型。但我希望供应商与供应商类型而不是第三方。我该如何解决这个问题?

最佳答案

使用 ThirdParty 的引用(变量)来存储属于 Supplier 和 Customer 的成员(抽象类不能有实例但可以有引用)。 ThirdParty 的任何虚拟方法都将在 Supplier 和 Customer 中实现,并且任何对 ThirdParty、Supplier 和 Customer 具有不同实现的方法,由于多态性,将调用适当的方法。因此,在第三方的引用中从数据库接收它们不会导致任何问题。当然,如果存在不在 ThirdParty 中但在 Supplier 或 Customer 中的方法,则会出现小问题,但同样,您始终可以打字。

希望这对您有所帮助。

关于c# - 在 Entity Framework 中使用派生类而不是抽象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378433/

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