【问题标题】:Coding to the interface using Entity Framework使用实体框架对接口进行编码
【发布时间】:2011-04-08 22:38:01
【问题描述】:

我正试图围绕实体框架展开思考,但无法理解如何对接口进行编码(或者,也许,是否可以对接口进行编码)。我对 C# 相当有信心,但主要是因为我能够使用许多其他语言进行编程,所以请原谅任何无知。

给定:

public interface IInputSource
{
    float GetCurrentValue(DateTime timestamp);
}

public class PatternSource : IInputSource
{
    …
    float GetCurrentValue(DateTime timestamp)
    {
        // generate value based on probability equation
    }
    …
}

public class TimeSeriesSource : IInputSource
{
     …
     float GetCurrentValue(DateTime timestamp)
     {
         // look up value in a key/value store
     }
     …
 }

我想为接口编写一个节点类,因为有 5 或 6 种截然不同的源类型:

public class Node
{
    …
    public IInputSource Inflow { get; set;}
    …
 }

似乎 Entity Framework 的 O/M 永远无法解析 Node 将引用的具体类,因此,人们根本无法对接口进行编码。真的是这样吗?

如果没有,谁能给我一个例子,说明如何在 EF 4 中实现这一点?我正在使用 VS2010 和 .NET 4,而且我是出于代码优先的心态。

【问题讨论】:

  • 当然,一个可能的选择是为 InputObject 创建一个基类并从中创建一个子类,但我想支持组合而不是继承。我只是想知道在这种情况下是否不可能。

标签: c# .net entity-framework interface


【解决方案1】:

我从未见过任何可以处理此问题的 ORM 框架。您最好的选择是作为 ORM 存根的抽象基类。

如果您的具体类继承了通用功能,则抽象基类可以从所需的超类继承,或者您可以使用装饰器来组合所需的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多