3
我試圖使用Entity Framework
來存儲&檢索一些對象,其中一個屬性是我無法控制的類。在實體框架對象中使用外部對象
對於這個問題描述起見讓我們說我想堅持Arc
對象:
class Arc {
public Angle start { get; set; }
public Angle end { get; set; }
// ... other properties ...
}
,但我沒有給Angle
源,其中有一個公共接口是這樣的寫訪問:
class Angle {
public enum Unit { Radians, Degrees };
public Angle(double value, Unit units); // constructor
public float Radians() { get; } // returns angle value in radians
public float Degrees() { get; } // returns angle value in degrees
}
我相信我能做到的的DbContext的OnModelCreating()
方法的角度字段映射到數據庫中的浮動列,但儘管閱讀MSDN
文檔的東西,我不是b我能夠弄清楚我需要做些什麼來完成這個任務。
不知何故,我需要閱讀角的度(或弧度)存儲對象時屬性,然後檢索它們時使用該值構造一個新的Angle
。我怎樣才能做到這一點?
編輯:我認爲一個貧窮的解決方案,這是使視角特性沒有映射,並添加額外的屬性映射每個做轉換,像這樣的:
public float start_degrees { get { return start.Degrees; }
set { start = new Angle(value, Angle.Degrees); }
}
但我寧願避免這種情況,因爲我的對象有許多這種性質的屬性,所以這意味着要增加更多。我希望有一個更簡單的解決方案。
感謝您的答覆,b我不認爲它解決了我的問題。如果我正確地理解了你,你建議我把現有的Angle類封裝在一個我控制的類中,但不幸的是,在這種情況下這並不實際(這裏有很多這樣的類,它們並不像Angle例子那麼簡單我構建)。在讀/寫數據庫時,我希望有一些插入轉換方法或類似於「(反序列化)」的方法。 (雙浮動的東西只是我的問題中的一個錯誤;想象一切都是相同的精度,我會更新我的問題)。 –
啊,好的。這似乎是解決方案的一半 - 據我所知,您的解決方案將角度寫入數據庫作爲一定的度數,這是完美的。但是反過來呢?讀取數據時,我的根對象需要以正確構造的Angle屬性結束,因此在某些時候,Angle構造函數需要使用正確的參數調用。 –