相关疑难解决方法(0)

实体框架linq查询Include()多个子实体

这可能是一个非常重要的问题,但是当编写跨越三个级别(或更多)的查询时,包含多个子实体的好方法是什么?

即我有4个表:Company,Employee,Employee_CarEmployee_Country

公司与员工有1:m的关系.

Employee与Employee_Car和Employee_Country都有1:m的关系.

如果我想编写一个返回所有4个表中数据的查询,我目前正在编写:

Company company = context.Companies
                         .Include("Employee.Employee_Car")
                         .Include("Employee.Employee_Country")
                         .FirstOrDefault(c => c.Id == companyID);
Run Code Online (Sandbox Code Playgroud)

必须有一个更优雅的方式!这是冗长的,并产生可怕的SQL

我在VS 2010中使用EF4

linq entity-framework lazy-loading

167
推荐指数
4
解决办法
26万
查看次数

我可以在EntityFramework中的ObjectSet上使用多少Include以保持性能?

我在我的个人资料页面使用以下LINQ查询:

var userData = from u in db.Users
                        .Include("UserSkills.Skill")
                        .Include("UserIdeas.IdeaThings")
                        .Include("UserInterests.Interest")
                        .Include("UserMessengers.Messenger")
                        .Include("UserFriends.User.UserSkills.Skill")
                        .Include("UserFriends1.User1.UserSkills.Skill")
                        .Include("UserFriends.User.UserIdeas")
                        .Include("UserFriends1.User1.UserIdeas")
                               where u.UserId == userId
                               select u;
Run Code Online (Sandbox Code Playgroud)

它有一个长对象图并使用许多包含.它现在运行得很好,但是当网站有很多用户时,它会影响性能吗?

我应该用其他方式吗?

linq performance linq-to-entities entity-framework asp.net-mvc-2

47
推荐指数
3
解决办法
1万
查看次数

实体框架渴望加载不返回数据,延迟加载

我首先使用代码EF5,我有一个对象,其集合定义为virtual(延迟加载).这会在调用时返回数据.但是我希望它能够满载.我已从virtual属性签名中删除但现在它总是返回null数据.EF甚至没有运行查询,任何人都可以帮忙吗?

编辑:我知道.include()我只是喜欢使用非虚拟属性方法.

对象

User([Key]Id在Resource对象上,是person类的Parent):

namespace Entities
{
    [Table("Users")]
    public class User : Person
    {

    [Required]
    public ICollection<Role> Roles { get; set; } 

    }
}
Run Code Online (Sandbox Code Playgroud)

角色:

namespace Entities
{
    public class Role
    {
        [Key]
        public string Id { get; set; }

        public virtual ICollection<User> Users { get; set; } 
    }
}
Run Code Online (Sandbox Code Playgroud)

c# entity-framework lazy-loading poco

16
推荐指数
1
解决办法
2万
查看次数

实体框架上的懒惰与急切加载性能

所以我的DbContext上有以下模型类:

贷款

每次我渲染一个LoanApplication对象列表时,我都会这样做:

var context = new MyContext();
var applications = context.LoanApplications.Where(d => d.PropertyThatIWantToFilter = localVariable);
Run Code Online (Sandbox Code Playgroud)

这将返回一个IQueryable,然后我在我的控制器方法调用上转换为这样的ViewModel:

var vm = applications.Select(d => new LoanApplicationViewModel(d));
Run Code Online (Sandbox Code Playgroud)

LoanApplicationViewModel构造函数内部,我接受实体对象并执行相应的映射.问题在于,由于Solicitors集合是一个导航属性,因此每次实例化新的视图模型时都会对数据库进行调用.每个应用程序的平均律师数量是两个,这意味着如果我呈现一个列出最后10个应用程序的表,那么该应用程序将大约18-20次访问数据库.

我认为必须有一个更好的方法来获得这个集合,所以我改变了我的原始查询以急切加载集合,如下所示:

var applications = context.LoanApplications.Include("Solicitors").Where...
Run Code Online (Sandbox Code Playgroud)

虽然这会将对数据库的调用次数减少到只有一次,但查询速度要慢得多,大约慢50%.

该数据库托管在SQL Azure中,我们已经实现了瞬态故障处理,但我想,以减少不降低响应时间的性能对数据库进行调用的数量.

这里的最佳做法是什么?

c# asp.net-mvc entity-framework code-first azure-sql-database

9
推荐指数
2
解决办法
2万
查看次数

实体框架自动加载

有没有办法让实体对象通过关系自动提取所有相关数据,而不是必须.包括我想要填充的所有内容?我不能使用延迟加载,因为这需要序列化以通过WCF.让它自动填充相关集合真是太棒了.

c# wcf entity entity-framework

8
推荐指数
1
解决办法
2135
查看次数

你可以将一个委托的结果链接成C#中另一个委托的输入吗?

我正在寻找一种方法来链接几个代表,所以一个人的结果成为下一个的输入.我试图在方程求解程序中使用它,其中部分通过不同的方法完成.这个想法是,当你构建方程式时,程序会添加代理并按特定顺序链接它们,因此可以正确解决.如果有更好的方法来解决问题,请分享.

c# delegates chaining

3
推荐指数
1
解决办法
1881
查看次数

使用实体框架返回所有相关实体

我第一次玩实体框架。我正在编写以下简单查询:

public List<Request> GetResult(string code)
{
    List<Request> requests = new List<Request>();

    using (var db = new Context())
    {
        requests = (from c in db.Requests where c.Code == code select c).ToList();
    }

    return requests;
}
Run Code Online (Sandbox Code Playgroud)

有一些与Request对象相关的实体,例如与Results表具有一对一关系的Request表。但是,它们都返回 null。

如何使用实体框架进行查询并返回实体及其所有相关实体?

TIA

c# entity-framework

3
推荐指数
1
解决办法
6186
查看次数