2011-07-21 23 views
0

我在DB中有表名Transaction。我想有2個子類TransactionA和TransactionB。我已經在這裏描述了:http://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/comment-page-1/#comment-607MS EntityFramework:如何用繼承拆分實體?

當我使用T4模板時,我生成了自我跟蹤實體。

一切都好但只有一件事。我可以看到生成的實體TransactionA和TransactionB,但我無法在上下文對象(ObjectContext)中看到它們。這是正常的嗎?如果是這樣,如果只有Transaction類是可訪問的,我怎麼能從表中使用上下文獲取TransactionB?

謝謝

+1

被警告,對交易查詢(換句話說,對基類而不是派生類會很差),例如, context.Transactions.Count()會在你的模型中的所有三個故事之間做一連串時髦的連接,儘管這不是必需的! –

回答

1

這是預期的。事務A en B從基類事務派生。在你的實體模型,你可以通過交易這樣的集合來訪問他們:

Context context = new Context(); 
List<TransactionB> list = context.Transactions.OfType<TransactionB>().ToList(); 
+0

是的,那是我在做什麼,但爲什麼上下文沒有將這個實體添加到模型後,TransactioB集合?我認爲這會更合乎邏輯。 – mimic

+0

我不知道它爲什麼。但它是設計。同意,這可能更符合邏輯。但我提供的答案可以回答你的問題,不是嗎? –

+0

http://blogs.msdn.com/b/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx可以給一些更多的見解 –