【问题标题】:Get data from relationship objects in entity framework?从实体框架中的关系对象获取数据?
【发布时间】:2013-11-30 01:52:17
【问题描述】:

我是 EF 和 Linq 的初学者,所以我想知道使用一种或另一种方法的区别和优势,例如,我可以看到可以使用类似的方法在两个表之间获取数据:

var usr = from cm in ctx.ConsumerName
          join c in ctx.Consumer on cm.ConsumerId equals c.Id
          where cm.ConsumerId == consumerId
          select new { Nombre = cm.FirstName + cm.LastName, Email = c.Email };

同样,类似的事情是可能的:

var usr = ctx.ConsumerName.Include(x=>x.Consumer);

或者类似的东西:

var consumer = ctx.Consumer.Find(id);
var vm = new ConsumerViewModel();
Mapper.CreateMap<Consumer, ConsumerViewModel>()
      .ForMember(dest => dest.Consumer, opt => opt.MapFrom(src => src));
vm = Mapper.Map<Consumer, ConsumerViewModel>(consumer);

谁能解释我用 MVC 和 EF 从我的数据库中获取数据的最佳方法是什么?谢谢

【问题讨论】:

    标签: asp.net-mvc linq entity-framework linq-to-entities


    【解决方案1】:

    使用 Entity Framework 创建和执行查询有多种不同的方法,例如 LINQ、Entity SQL 等。 LINQ to Entities 是最常用的,我认为这是使用 EF 从数据库中获取数据的好方法。 您可以在此处了解有关 LINQ 的更多信息:

    http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

    从您提供的代码示例中,我认为您不太清楚 LINQ 和实体框架是什么。

    var usr = from cm in ctx.ConsumerName
              join c in ctx.Consumer on cm.ConsumerId equals c.Id
              where cm.ConsumerId == consumerId
              select new { Nombre = cm.FirstName + cm.LastName, Email = c.Email };
    

    上面是一个带有连接运算符的 LINQ 查询。

    var usr = ctx.ConsumerName.Include(x=>x.Consumer);
    

    上面是急切加载。 Entity Framework 支持三种加载相关数据的方式,即急切加载、延迟加载和显式加载。

    var consumer = ctx.Consumer.Find(id);
    var vm = new ConsumerViewModel();
    Mapper.CreateMap<Consumer, ConsumerViewModel>().ForMember(dest => dest.Consumer, opt => opt.MapFrom(src => src));
    vm = Mapper.Map<Consumer, ConsumerViewModel>(consumer);
    

    以上是使用 AutoMapper 映射 EF 中的实体集合。

    如果您想了解更多关于实体框架的信息,请查看下面的链接,这里有很多很棒的文章 由专家撰写。

    http://msdn.microsoft.com/en-US/data/ee712907#ef6

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      相关资源
      最近更新 更多