2017-10-19 188 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