繁体   English   中英

使用现有数据库和EF代码优先,将查找表映射到实体

[英]Using existing database and EF code-first, mapping a lookup table to entity

我正在使用实体框架(代码优先为4.0),命中现有的旧数据库以进行只读访问。 数据库已规范化,因此

 Table [Event]
      [ID]
      [Date_Entered]
      [Event_Status_Key]

 Table [Event_Status]
      [Event_Status_Key]
      [Event_Status_Description]

我的课看起来像

 public class Event
 {
       public DateTime DateEntered { get; set; }
       public string StatusDescription { get; set; }
 }

这是WCF服务层应用程序。

我的两个问题:

  1. 是否有任何简单的方法可以在不创建第二个Dictionary-type对象的情况下填充状态描述? 我见过这样的问题: 实体框架映射到查找表 ,但是它们似乎集中在对象到对象上,我真的只想要一个基元。 我更喜欢使用流畅的API而不是属性。

  2. 加载数据时,代码层中是否缓存了任何数据? 还是对StatusDescription的每次检查都意味着对[Event_Status]表的单独调用?

编辑:一个可能的(比较主观的原因,这就是为什么我没有提出它)第三个问题是数据实体应该与数据库匹配多近。 它始终是一对一的字段/表吗? 我正在做什么(将两个表连接到一个数据实体对象中)不好?

谢谢。

实体框架期望您将两个表都映射为单独的实体,并在查询中使用投影:

var query = from e in context.Events
            select new WcfEvent // Your original Event class is just DTO
                {
                     DateEntered = e.DateEntered,
                     StatusDescription = e.EventStatus.EventStatusDescription 
                };

此示例期望正确的EventEvent_Status表一对一映射。

如果您需要任何类型的缓存,则必须自己实现。 预测结果甚至不会被上下文跟踪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM