2012-12-18 33 views
6

我正在尋找在以下問題的解決方案:繼承在.net中的EntityFramework 4.0類似的數據庫表

我有一個從少/無列彼此(爲什麼發生這種情況區分許多表是不是這樣的因爲我沒有設計過這個數據庫,所以我也不能改變它)。

例: 表用戶:列{姓名,年齡} 表OldUser:列(姓名,年齡,lastDateSeen} 等

有什麼辦法,以指示的EntityFramework 4.0在Visual Studio擴展由_name,_surname,_age字段組成的基類以及它們的相應屬性,以便我可以在代碼中使用該類進行批處理作業?

我目前的解決方案是使這個類並使用轉換器來傳遞來自持久對象的值,它的對象,它的作品,但它不是優雅的,我不喜歡它

我來自java/hibernate環境,這是基本的功能。

提前

感謝(對未來refernce可同樣的事情,如果我想的類來實現接口?完成)。

+0

這實際上是一個實體框架問題嗎?我從來沒有聽說過實體經理。幸運的是,特定的ORM技術不會影響您的問題的答案。 –

+0

你是對的,我的意思是EntityFramework –

+0

所以我的答案解決了你的問題?因爲經過批准的答案肯定會被讚賞!謝謝! –

回答

1

由於您的RDBMS(至少SQL Server 2008及更早版本)不允許表繼承,因此我建議您不要在C#中的數據庫模型中使用繼承。當你無法控制表格的設計時,這是特別推薦的。

如果您實際上擁有那些可以從抽象中受益的類的客戶端,但無法控制數據庫的設計,則使用接口會降低其價值,因爲數據庫設計人員可能會更改這些表,從而使您的EF類不再實現接口:

public interface IUser { 
    public string Name { get; } 
    // etc... 
} 

public class User : IUser { 
    public string Name { get; set; } 
    // etc... 
} 

public class OldUser : IUser { 
    public string Name { get; set; } 
    // rest of IUser 
    public DateTime? LastSeenOn { get; set; } 
}