2009-08-05 104 views
21

我在我的數據庫中創建了一個視圖,我希望將其包含在我的實體模型中。但是,當我嘗試通過VS 2008更新實體模型時,會有一條警告消息告訴我,我試圖添加的TABLE或VIEW沒有主鍵。視圖和實體框架

看來,爲了一個視圖添加到模型中,這必須有一個關鍵的領域!我如何將這個視圖添加到我的模型中,如果視圖不允許有關鍵字段,至少在Firebird中是我正在使用的DBMRS。

如何解決這個任何想法?

+0

下面是一個Visual Studio擴展,所有這一切給你,看看這個帖子:[?由於缺乏對ADO.NET實體框架設計的SQL視圖的支持感到沮喪(http://blogs.microsoft。 co.il/blogs/shimmy/archive/2010/09/03/frustrated-by-lack-of-support-for-sql-views-in-ado-net-entity-framework-designer.aspx) – Shimmy 2012-09-02 00:35:27

+2

這篇帖子可能有幫助:[http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables/](http://smehrozalam.wordpress。 com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables /) – 2009-11-11 16:57:21

回答

10

有一個偉大的答案,在這裏:Entity Framework and SQL Server View(見接受的答案:https://stackoverflow.com/a/2715299/53510

EF通過組合非空的領域推斷的意見PK。你可以使用ISNULL和NULLIF來操縱視圖列的可空性,從而強制EF選擇你想要的PK。

+4

如果您使用ISNULL或NULLIF,這使得字段是隻讀的,因此視圖變爲大部分是隻讀視圖。這隻在某些情況下有用 – 2012-03-31 21:02:31

+0

EF 5.0版本上沒有適用於我。 – Dave 2013-08-25 18:19:52

0

火鳥的看法沒有鑰匙。相反,設置一個(或多個)字段爲「NOT NULL」使用下面的命令:

update RDB$RELATION_FIELDS set RDB$NULL_FLAG = 1 where (RDB$FIELD_NAME = 'A_FIELD') and (RDB$RELATION_NAME = 'A_VIEW') 

然後重新導入實體框架數據庫。