[英]Mapping table name in Entity, when you define Code-First by existing Database
[英]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服务层应用程序。
我的两个问题:
是否有任何简单的方法可以在不创建第二个Dictionary-type对象的情况下填充状态描述? 我见过这样的问题: 实体框架映射到查找表 ,但是它们似乎集中在对象到对象上,我真的只想要一个基元。 我更喜欢使用流畅的API而不是属性。
加载数据时,代码层中是否缓存了任何数据? 还是对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
};
此示例期望正确的Event
和Event_Status
表一对一映射。
如果您需要任何类型的缓存,则必须自己实现。 预测结果甚至不会被上下文跟踪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.