2

什么应该推动以下情况的设计考虑?级别层级定义VS(自动)生成的导航属性

假设你有行情。

报价涉及特定的合同。

我可以下列方式定义我的班

Contract = 
    someproperty : int 

Quote: 
    contract : Contract 

然而,当我浏览我想,即使它在我的模型存在,才能够做

myContract.quotes 

通常,这些属性是使用实体框架时生成或一些其他的ORM。

但使用纯内存只有类,即使从导航存在完全通用分离定义,问题。

(我猜人们可以架在成生成导航图的传递闭包,从链接在定义中指定的子集)

我的问题是:什么是自动继承这些导航可能的实用方法FSharp中的属性?我只是一个用户,而不是一个框架开发人员,并认为这是非常低层次的东西。

[显然可以推广到更复杂的类层次结构可以

  • 报价来自一个经纪人,是投标或要求的性质,有水平,是对特定的合约的Valide。
  • 合同可以是一定的到期日,比如说2013年,并且指的是一家特定的公司。
  • 公司拥有股票,等等,等等...]
+0

我会自己纠正这一点,但我不太确定“我接受的报价是否适用于特定合同。”应该读。你的意思是说“一个特定合同的报价变得无效”吗? – 2012-03-02 15:23:52

+0

正确,对不起 – nicolas 2012-03-02 15:27:08

回答

2

也许我误会了;但是你能不能使用extension method来添加这种导航功能?你仍然需要调用一个函数来获取特定合约的引号,但该助手是否存在,它可以调用你的数据提供者来获取该联系人的过滤引用列表?

+0

这似乎是一个实用而且毫无意义的想法。因为在问题发生时我正在(重新)编程,所以我以一种更一般的方式提出了这个问题,这可能不适合SO。 – nicolas 2013-11-05 09:18:42

1

哼哼,有趣的问题。

根据此blog post,您可以使用实体框架以非数据库支持的方式执行此操作。你必须自己处理持久性。

或者你可以尝试花费一个周末的时间自己用一个通用的F#解决方案来解决这个问题,但我会说EF在这里足够了吗?

+0

确实,但我仍然必须处理代码注释和“id的”,我觉得应该隐藏。另外,我需要源代码访问类型,我没有使用类型提供者。这意味着创建'包装'。讨厌。 – nicolas 2012-03-02 17:12:37

+0

实际上,即使是实体框架也不支持.... cf查找所有相关产品的基本操作所需的所有管道和代码.... http://books.google.com/books?id=WdRzgaw5tlQC&pg = PA198&lpg = PA198&dq = entity + framework + transitive + closure&source = bl&ots = 3WjqLvDCgL&sig = xTioCFV08R6pF55v8tj37EQ-LLE&hl = en&sa = X&ei = gCpRT5tT4rzRBfPW5fwL& ved = 0CCMQ6AEwAA – nicolas 2012-03-02 20:19:09