2017-10-19 190 views
0

如果我有一個看起來像這樣的域模型:如何使用實體框架核心的泛型類型?

public class Foo<T> { 
    public Guid Id { get; set; } 
    public string Statement { get; set; } 
    public T Value { get; set; } 
} 

我想用它內置的數據類型(字符串,整數,等...),以及日期。 我想用它喜歡:

var foo = new Foo<string>(); 
foo.Value = "Hey"; 

我怎麼能這樣堅持使用EF核心數據庫?

我想象中的數據庫表看起來就像

| Id | Statement | ValueAsString | ValueAsDecimal | ValueAsDate | ValueAsInt | 
| 1 | NULL  | "Hey"   |    |    |   | 
| 2 | NULL  |    | 1.1   |    |   | 
+0

看到我的最新評論。然後讓它更抽象,併爲你的代碼創建一些投射邏輯。 –

回答

3

你還是應該有一個類。您的課程Foo應該是抽象的。 所以,你會得到「:

public abstract class Foo<T> { 
    public Guid Id { get; set; } 
    public string Statement { get; set; } 
    public T Value { get; set; } 
} 

那麼你的實現類是:

public class Orders: Foo<Order> { 
} 

現在你有你的Orders類可以存儲你的泛型類型

+0

感謝您的回答:D有沒有其他方法?感覺就像它擊敗了泛型點? – chris31389

+0

爲什麼這樣感覺?是不是所有的想法,所以你不必爲每個(域)模型的每個字母輸入相同的東西..?你的數據庫如何看起來像那樣?或者你的DTO或其他型號? –

+0

我將不得不爲每個我想使用Foo的類型創建一個類?如果我說我只想使用這個基礎類型,那麼它會更容易嗎? – chris31389