我有相同類型的表單一實體
ProductCodeTable,CountrycodeTable等
所有有鍵,值作爲各自領域的
當我使用實體框架的工作, 我能有一個所有這些表的單個實體,以便我可以制定不同的查詢以從不同的表中獲取數據?
我有相同類型的表單一實體
ProductCodeTable,CountrycodeTable等
所有有鍵,值作爲各自領域的
當我使用實體框架的工作, 我能有一個所有這些表的單個實體,以便我可以制定不同的查詢以從不同的表中獲取數據?
您可以創建一個視圖,這樣所有表的聯盟:
create view AllKeyTables as
SELECT 'Product' as table, Productkey as Key, nameProduct as name
FROM ProductCodeTable
UNION
SELECT 'Country' as table, CountryISO as key, CountryName as name
FROM CountrycodeTable
UNION
...
然後更新EF模型,並選中「表」和爲實體主鍵「鍵」字段。
接下來你要做的問題是:'我如何在這個實體和現有實體之間建立關係?'答案是'你不能因爲EF不能在除主鍵以外的其他字段之間加入實體「。然後,在實施此解決方案之前,請確保這是您正在尋找的。
您可以爲所有的人創造一個基類,併爲每個實體
public abstract class LookUpEntity
{
[Key]
public int Key { get; set; }
[Required]
public string Value { get; set; }
}
[Table("ProductCodeTable")]
public class ProductCode : LookUpEntity
{
}
這樣你可以,如果你想那些仰望實體添加特定性質的關係,也與後來的模型創建子類不影響其他實體。
EF只有在您將其建模爲繼承時才支持此功能(@Eranga以代碼優先的方式顯示它)。您將爲每個表具有單個基本實體和派生實體,因此您不會避免爲每個表使用不同的類型。否則答案是否定的。
繼承會對錶中的數據提出額外的要求。例如,Ids在所有表格中必須是唯一的。因此,如果ProductTableCode
將具有Id 1的記錄,CountryCodeTable
(和任何其他代碼表)必須不具有Id 1的記錄。
EF中的繼承還會產生令人討厭且性能很差的查詢。
你是說每個表的設置如下: | ID | KEY | VALUE |時間 – WojonsTech