none
求 dbset 类的成员及方法说明 RRS feed

  • 问题

  • mvc3 ef5.0 rc 的框架 使用的code first,在dbcontent 类下定义了多个 dbset属性

    操作的时候对 dbset 的使用很陌生,看了一些教程,大多对如何创建实体类,导航属性的一些介绍

    在使用的时候,教程上会提到 include方法,我知道他的参数用到了 数据类的 导航属性,可具体的意思还不是很理解,还有最好也把其他方法的说明给小弟指导指导。

    先谢过

    补充:

    或者有  System.Data.Entity.Infrastructure.DbQuery 的文档介绍也可以


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/


    • 已编辑 Dodu.NET 2012年7月8日 3:09
    2012年7月8日 2:53

答案

  • Linq to Entity对Include的实现是在生成SQL的时候做一个Join来填充导航属性,你不测试导航属性的话是看不出效果的。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月9日 14:24
    版主

全部回复

  • 代表数据库里的一个表。CRUD是通过DBSet来做的


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月8日 3:38
    版主
  • 你好,我知道是代表一个表,实体中调用的时候,include方法具体什么意思能解释一下嘛

    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月8日 12:57
  • DbExtensions.Include是一个扩展方法,将相关的对象包含到LINQ查询里面


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月8日 14:17
    版主
  • 谢谢,那我现在举个例子,你看我对include的理解对不对

    class a1

    public property a1ID as int32
    public property a1_name as string

    end class

    class a2

    public property a2ID as int32
    public property a1ID as int32
    public property title as string

    <foreignkey("a1ID")>
    public overridable _a1 as a1

    end class

    以上是两个数据表实体类,上下文类名为 DbConn

    在查询的时候,我用一下语句得到一个记录 _a2, 重点是加粗下划线的一个属性名称:

    dim db as new DbConn
    dim _a2 as a2 =db.a2.include("_a1").single(function(a) a.a1_name = "testname")

    我这样做对吗?(解释一下,我全部手工在这里coding的代码,没有在vs中试。只是说明一下我对include的理解)


    人要诚实!还要踏实! 我先为人人,人人再为我! 我的Spaces: http://mydodu.spaces.live.com/

    2012年7月9日 13:49
  • Linq to Entity对Include的实现是在生成SQL的时候做一个Join来填充导航属性,你不测试导航属性的话是看不出效果的。


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP

    2012年7月9日 14:24
    版主
  • index方法调用告知实体框架厍载一个表的导航属性所对应的表的信息时采用预加载策略,也就是一次性加载所有相关数据吧。

    例如:

    MusicStoeDB db = new MusicStoreDB();
    var albums = db.Albums.Includ(a=>a.Genre).Include(a=>a.Artist);

    其中Genre 和 Artist 为 Albums 的导航属性。

    实体框架的另一种(默认的)策略是延迟加载策略。使用延迟加载策略,EF在LINQ查询中只加载主要对象的数据(在这个例子中也如果不用Include,就只会加载Albums表对象的数据而不会填充Genre和Artist属性)。


    • 已编辑 木雨凉 2013年2月5日 18:54
    • 已建议为答案 木雨凉 2013年2月5日 18:54
    2013年2月5日 18:39