如何使用实体框架核心的泛型类型?
如果我有一个看起来像这样的域模型:如何使用实体框架核心的泛型类型?
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 | | |
你还是应该有一个类。您的课程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
类可以存储你的泛型类型
感谢您的回答:D有没有其他方法?感觉就像它击败了泛型点? – chris31389
为什么这样感觉?是不是所有的想法,所以你不必为每个(域)模型的每个字母输入相同的东西..?你的数据库如何看起来像那样?或者你的DTO或其他型号? –
我将不得不为每个我想使用Foo的类型创建一个类?如果我说我只想使用这个基础类型,那么它会更容易吗? – chris31389
看到我的最新评论。然后让它更抽象,并为你的代码创建一些投射逻辑。 –