簡體   English   中英

是否可以在Entity Framework中的兩個普通字段之間創建關聯,從而忽略主鍵?

[英]Is it possible to create an association between two normal fields in Entity Framework, thereby ignoring the primary key?

我在這三個表之間有以下情況:

替代文字

在我開始解釋我在這里要完成的任務之前,讓我澄清三件事:

  1. 我在EntityFramework上繪制了模型,但這實際上是數據庫視圖。 假設字段類型在表之間匹配;

  2. 我知道這個數據庫模型很糟糕。 但改變它是不可能的。 我知道這會讓我的生活更輕松。

  3. 我在這個項目上使用Visual Studio 2008和.Net 3.5。 但我也接受基於Visual Studio 2010和.Net 4.0的解決方案。

所以,正如我試圖在上面的圖片中展示的那樣,在我正在研究的這個項目中,我得到了這3個表。 其中之一TransactionLine將文件關聯到事務行,該事務行是完整事務的一部分。

現在,我在這里想要關聯的是TransactionLineFile 但是, TransactionLine沒有File表中的FileId字段。 此表中的字段FileNumberFileType代表File上的復合鍵。 事實上, FileFileNumberFileType永遠不會重復。 它們可能是主鍵,但話說再說一遍,我無法觸及數據庫結構。

我嘗試通過將一對多的關聯文件轉換TransactionLine來關聯TransactionLineFile 之后,我選擇Association並切換到Mapping Details屏幕,然后選擇Map to TransactionLine

他要我填寫模型屏幕的數據是:

  • 檔案 FileId ;
  • TransactionLine TransactionId ;
  • TransactionLine FileNumber ;
  • TransactionLine 文件類型

所有TransactionLine標量屬性都由它們相應的數據庫字段設置,這些字段具有相同的名稱。 但是當我要指定與File表的鏈接時,我可以指定的唯一標量字段是FileId ,我在TransactionLine表上沒有。

我還嘗試將FileFileNumberFileType標量屬性實體鍵標志設置為true,並將FileId實體標志設置為false,但沒有成功,因為程序警告我數據庫FileId是主鍵但是沒有像上一樣設置實體。

是否可以將TransactionLine FileNumberFileTypeFile鏈接? 這種情況有沒有解決方法?

特別注意: FileId確實是File的主鍵。 其他表格通過此字段與其鏈接。 TransactionLine是常識規則的一個例外。 :(

我們達到了目標:D。

感謝Wily博士的Apprentice為我們提供了解決方案的提示。

這是我們做的:

替代文字

  1. 我們創建了一個名為VIEWFILEEXTRA的視圖,其中只包含我們要在關聯中使用的字段;

  2. 之后,我們基於這個視圖創建了一個名為FileExtra的實體;

  3. 將FileExtra映射到VIEWFILEEXTRA,如果尚未完成;

  4. 將FileExtra Entity Key標志中的FileNumber和FileType更改為true;

  5. 從File中刪除FileNumber和FileType標量屬性;

  6. 在文件和FileExtra之間創建1對1關聯;

  7. 在關聯映射中設置標量屬性以指向File的數據庫字段FileNumber和FileType;

  8. 在FileExtra和TransactionLine之間創建1到多個關聯;

  9. 將關聯映射指向TransactionLine,並設置字段。

就是這樣。 非常感謝您的關注和提示:D。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM