2016-02-28 138 views
1

可以說我有在YYYY-NNNNNC的格式,其中Y正以每年兩位數的賬號,N是一個數字,C是盧恩校驗位。實體框架隱式類型轉換

例子:2016-426013

它可以作爲一個字符串存在的所有信息,它本來如果它是在課堂形式:現在

public class AccountNumber 
{ 
    public int Year { get; set; } 
    public int Number { get; set; } 
    public int Checksum { get; set; } 
} 

,在我的應用我寧願被處理用這個不錯的對象,而不是我可能需要解析的字符串。但是在數據庫中,它幾乎需要作爲字符串存在。

,我寫我的隱式轉換

public static implicit operator string(AccountNumber an) 

而且

public static implicit operator AccountNumber(string s) 

有什麼辦法,我可以讓EF店一類是這樣的:

public class Account 
{ 
    public AccountNumber AccountNumber { get; set; } 
    ... 
} 

但有它將AccountNumber轉換爲和從string出於數據庫存儲的目的?

回答

1

這是EF最需要的功能之一,但還沒有出現。類型轉換。所以目前,您需要使用字符串數據類型來處理EF。並用另一個AccountNumber屬性進行包裝,該屬性在內部對其執行GET/SET。

隱式運算符將無法工作,因爲AccountNumber entiry必須在事務的SQL域中構造,因此它將始終以字符串的形式返回。發佈後,你可以做一個類型轉換,也許這就是EF團隊會提出的。

但目前,您需要有明確的包裝屬性,爲您做轉換..或有擴展/幫助器方法來處理它。

功能請求鏈接:https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2639292-simple-type-mapping-or-mapped-type-conversion-supp

+0

大鼠......至少我們有一個解決方法。爲了完整起見,這裏是[鏈接到功能請求](https://data.uservoice.com/forums/72025-entity-framework-feature-suggestions/suggestions/2639292-simple-type-mapping-or-mapped- type-conversion-supp) –

+0

感謝@AdamSchiavone的鏈接。我編輯了我的答案,爲他人添加鏈接 –