在我们的数据库中,我们有名为LookUps的表(通用,没有名为lookups的表) - 1. MaritalStaus(LookUpId,描述)。 2. TypeOfRelations(LookUpid,description) 3.标题(LookUpid,描述)
为这种表定义模型的最佳方法是什么。我想的是,如果我创建一个类似
的泛型类public class LookUp<T>
{
//where T is one of lookup kind
}
public class MaritalStatus : LookUp
{
// no field
}
//标题和关系类型相同。
但我很困惑如何将它们放在一起 1.我是否必须将所有类型与表等匹配才能进行配置? 2.通用查找在数据库中没有表格? 任何好的教程或建议欢迎。 谢谢, 达尔吉特
答案 0 :(得分:1)
我假设你正在混合一些概念。我相信您打算只使用以下方案中的一个类来访问您的查找表:
var maritalStatus = new Lookup<MaritalStatus>();
var typeOfRelations = new Lookup<TypeOfRelations>();
然后让EF知道如何使用通用Lookup<T>
类处理数据与数据的读写。 EF不可能采用这种方法,因为没有DbSet<T>
泛型类型,因为EF不会事先知道要读写的表(T可以是任何东西)。
其中一种方法是在EF上使用Table per Type继承。如果您可以更改数据库模式,那么您可以创建父LookUp表并使其他LookUps全部来自父级,然后您可以使用EF的每个类型表功能并在查询期间调用.OfType<T>
扩展方法。 / p>
检查Morteza Manavi的文章,以获得关于如何做到这一点的非常好的解释: http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-2-table-per-type-tpt.aspx
如果您无法更改数据库架构,那么您可以使用Table per Concrete类方法,而不使用父类的具体表,这也在Morteza Manavi的文章中进行了描述: http://weblogs.asp.net/manavi/archive/2011/01/03/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-3-table-per-concrete-type-tpc-and-choosing-strategy-guidelines.aspx
祝你好运。