使用EF 4,我具有“业务”实体的几种子类型(客户,供应商,运输公司等)。它们确实必须是子类型。我正在构建一个通用的 View 模型,该模型调用一个服务,从该服务可以访问通用存储库。

由于我有4个子类型,因此最好将“通用” View 模型用于所有这些子类型。问题当然是我必须在通用存储库中调用特定类型,例如:

BusinessToRetrieve = _repository
    .LoadEntity<Customer>(o => o.CustomerID == customerID);

能够调用<SomethingElse>(somethingElse是子类型中的一个或其他子类型)会很好,否则我将不得不创建4个几乎相同的viemodel,这当然很浪费!子类型实体名称可用于viewmodel,但是我一直无法弄清楚如何使上述调用将其转换为类型。实现我想要的一个问题是,大概传入的lambda表达式将无法解决“通用”调用?

最佳答案

听起来您需要使自己熟悉generics。首先,您将可以编写如下代码:

class ViewModel<T> where T : Business {
    public void DoSomething(Func<T, bool> predicate) {
        BusinessToRetreive = _repository.LoadEntity<T>(predicate);
    }
}

然后您可以说:
ViewModel<Customer> c = new ViewModel<Customer>();
c.DoSomething(o => o.CustomerID == customerID);

关于entity-framework - 通用ViewModel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2087927/

10-15 18:58