Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 首先在实体框架代码中将多个表映射到单个实体_Entity Framework - Fatal编程技术网

Entity framework 首先在实体框架代码中将多个表映射到单个实体

Entity framework 首先在实体框架代码中将多个表映射到单个实体,entity-framework,Entity Framework,在数据库中,我们有名为Sites、organization、Person、Department的表,它们具有相同的结构,如LookupID、Description等。 还有一些其他表格,如问题、答案等。这些表格有与上面相同的列,还有两列或三列额外的列 首先使用实体框架代码实现此功能的最佳方法是什么 在代码方面,我考虑的是具有公共属性的查找类,然后是一些用于提问的属性等 我无法想象我将如何告诉EF加载我想要的查找,因为(我不能有网站、组织等类型,因为这些都是查找等) 版本不是问题,我们可以使用最新

在数据库中,我们有名为Sites、organization、Person、Department的表,它们具有相同的结构,如LookupID、Description等。 还有一些其他表格,如问题、答案等。这些表格有与上面相同的列,还有两列或三列额外的列

首先使用实体框架代码实现此功能的最佳方法是什么

在代码方面,我考虑的是具有公共属性的查找类,然后是一些用于提问的属性等

我无法想象我将如何告诉EF加载我想要的查找,因为(我不能有网站、组织等类型,因为这些都是查找等)

版本不是问题,我们可以使用最新的一个,因为这是新的项目


谢谢,

这听起来像是每类表(TPC)继承。您将把查找实体建模为基本抽象类,并从查找实体派生所有其他实体。派生类将仅声明特定字段。在数据库中,每个派生实体将表示为带有共享字段和派生字段的分离表

在和方法中可以实现此映射,但当您尝试查询这些表时,它可能会对性能产生一些影响。如果您仅查询常规查找,EF将始终连接所有派生表,因为它不知道哪些包含您需要的特定字段。我不确定这是否也发生在TPC继承中,但EF有时,即使您显式地告诉所有继承的表您想查询特定的类型,它们也会连接所有继承的表——这在其他形式的继承(TPT)中是一个特别的问题,但应该在.NET4.5中解决


编辑:我忘了提到一个细节。EF中的每个实体都必须由其键唯一标识。如果映射继承,则继承层次结构中的每个实体都必须由其键唯一标识。这意味着所有查找表都必须使用唯一的键值。

谢谢您的回复,但我想不出如何才能告诉EF广告我想要的查找,因为(我不能有站点、组织等类型,因为这些都是查找等。不,它们不仅仅是查找。它们有特定的字段-它们之间必须有所不同。否则,您必须创建一个视图,其中包含所有字段与所有可能列的并集。一个表的特定列将在其他表的记录中为空。Thanks,我是否应该创建一个类似于字符串值的类型的属性,并且不应该映射到数据库,这是可能的。是否有任何示例等。非常感谢您对使用继承的原始方法的帮助,您通常不需要这样的属性,因为每个实体都有特定的.NET类型。在具有视图的第二种方法中,您必须将其作为compUTE列直接映射到视图并将其映射。感谢您的宝贵建议,如果我想为每次查找创建类型,我可以创建不带任何属性的类型。例如,查找(基本类型)具有LookUpID、description属性,但站点继承自查找,没有其他属性。感谢您的帮助和指导。