小编Che*_*hev的帖子

实体框架是否使用反射和损害性能?

我最终有两个领域,每个领域都有一些关于实体框架的问题,但是让我给出一些背景知识,以便你知道我要求提供这些信息的背景.

在我的工作地点,我的团队正计划完全重写我们的应用程序结构,以便我们能够遵循更现代的标准.这种重写包括一个全新的数据层项目.在这个项目中,大多数团队都想使用Entity Framework.我也想使用它,因为我在个人项目中使用它非常熟悉它.但是,一个团队成员强烈反对这一点,并指出实体框架使用反射并杀死性能.他的另一个论点是EF使用生成的SQL,其效率远远低于存储过程.我不太熟悉EF的内部工作,我的搜索没有发现任何非常有用的东西.

这是我的问题.我试图让它们尽可能具体.如果您需要澄清,请询问.

问题1问题 - 反思

  1. 关于使用反射和伤害性能的EF,这是真的吗?
  2. EF如果使用反射,它在哪里?
  3. 有没有比较性能的资源?我可以用什么来客观地比较.NET中的数据访问技术,然后将它呈现给我的团队?

问题2问题 - SQL

  1. 这有什么影响?
  2. 是否可以使用存储过程来填充EF实体?
  3. 还有一些资源可以将生成的查询与存储过程进行比较,以及使用存储过程填充实体(如果可以)的含义是什么?

我自己做了一些搜索,但没有提出太多关于引擎盖下的EF.任何帮助深表感谢.

编辑

这些都是一些非常有用的答案.谢谢.我将暂时搁置这个问题一段时间,以便可以提供一些文章和其他外部资源的硬性参考.也许这个问题将有助于未来的人在我的困境中.

c# asp.net ado.net entity-framework entity-framework-4

6
推荐指数
2
解决办法
3271
查看次数

你应该在哪里存储第三方集会?

好的,我们有一个相当大的解决方案,里面有大约8个不同的项目.这些项目中的每一个都依赖于各种不同的第三方组件.该解决方案位于源控制的主干分支中.我们还有大约5个不同的树干分支.

管理这些第三方程序集的最佳方法是什么?当您添加对程序集的引用然后单击它并查看属性窗口时,我注意到它具有到程序集的硬编码路径.

例如:我们所有的分支都映射到"C:\ Code \".因此trunk将是"C:\ Code\Trunk",而分支将是"C:\ Code\somebranch".

如果我在"C:\ Code\Trunk"中创建一个名为"Assemblies"的文件夹,然后将所有第三方程序集放在该文件夹中,然后我添加一个程序集的引用,那个程序集引用是否相对?如果我单击添加的程序集,我看到灰色的路径属性显示"C:\ Code\Trunk\Assemblies\someassembly.dll".

如果我然后从树干分支会发生什么?"somebranch"仍然会引用"C:\ Code\Trunk\Assemblies\someassembly.dll",还是会引用"C:\ Code\somebranch\Assemblies\someassembly.dll"?

目前,我们实际上在源控件中有一个名为"Assemblies"的分支,它像任何其他分支一样映射到"C:\ Code \".因此,所有带有引用程序集的项目的分支都引用了"C:\ Code\Assemblies\someassembly.dll",无论项目位于哪个分支,路径都是相同的.

不幸的是,这意味着您必须获得正在使用的分支的最新版本以及程序集分支,以便成功构建解决方案.

总而言之:

  • 如何添加与解决方案相关的引用?(即添加对C:\ Code\Trunk\Assemblies\someassembly.dll的引用,并使该路径相对于添加它的项目,以便在创建分支时引用分支的程序集文件夹而不是trunk的程序集文件夹.或者这个参考已经相对了吗?

  • 管理第三方程序集的其他推荐策略是什么?

.net c# asp.net version-control tfs

6
推荐指数
2
解决办法
2765
查看次数

Ninject.Web和用户控件

我正在使用Ninject.Web库和我们的Web表单应用程序.它工作得很好,除了现在我需要将依赖注入到用户控件中.完成此任务的最佳方法是什么?Ninject.Web不包含与Web服务,页面和母版页类似的基类.

c# asp.net user-controls webforms ninject

6
推荐指数
1
解决办法
1101
查看次数

如何更改Dictionary <string,bool>中的所有值?

所以我有一个Dictionary<string, bool>,我想做的就是迭代它并在字典中将所有值设置为false.最简单的方法是什么?

我试过这个:

foreach (string key in parameterDictionary.Keys)
    parameterDictionary[key] = false;
Run Code Online (Sandbox Code Playgroud)

但是我收到错误:"收集已被修改;枚举操作可能无法执行."

有一个更好的方法吗?

c# linq dictionary loops enumeration

6
推荐指数
2
解决办法
9292
查看次数

在网上创建API意味着什么?

我有一个在ASP.NET MVC中构建的站点,并使用大量的jQuery客户端交互来构建实时聊天室.许多用户解析了javascript并找到了它发布到的URL以便与聊天进行交互.他们开始制作机器人,以便在聊天频道中玩游戏.

这些用户不断要求提供"API",以便他们更容易进行编码.我以为我知道什么是API,但我想我还是有点模糊.API不是第三方可以与之交互的任何接口吗?

为我的网站构建Web API意味着什么?它只是一个包含URL列表以及如何与它们交互的文档吗?

我也听说过Web服务和Web引用.这些是什么?构建Web服务意味着什么?这与网络上的API有什么关系吗?

c# asp.net api asp.net-mvc web-services

6
推荐指数
1
解决办法
6194
查看次数

在Entity Framework中添加/删除多个到多个关联

我的示例数据库中有三个表:

用户

  • ID
  • 用户名
  • 密码

角色

  • ID
  • 名称
  • 描述

的UserRole

  • 用户身份
  • 角色ID

UserRoles是一个用于模拟多对多关系的查找表.向此表添加记录允许用户关联用户和角色中的记录.我的问题是,在实体框架中,它正确地将其解释为多对多的关系并抽象出查找表.生成的实体和关系如下所示:

http://www.codetunnel.com/content/images/manytomany.jpg

这在大多数情况下都很有用,但是当我想在该查找表中添加/删除条目时,我不知道该怎么做.我可以删除角色或用户,但实际上删除了对象而不仅仅是它们之间的关联.

我知道有一个选项可以将一个虚拟列添加到UserRoles查找表中.这将迫使Entity Framework将查找表转换为一个完整的实体,允许我添加和删除它们作为单独的对象.但我不需要虚拟列,这似乎是一个黑客.我正在寻找更好的建议.

任何帮助表示赞赏.

.net c# entity-relationship entity-framework entity-framework-4

6
推荐指数
1
解决办法
6514
查看次数

如何使用Entity Framework实现搜索功能?

我有一个使用Entity Framework为数据库建模的博客应用程序.这个博客的问题是找到我正在寻找的东西变得很困难.它需要一个搜索功能,但我不知道如何使用SQL和/或LINQ to Entities实现它.

现在我正在使用这个LINQ查询搜索我的数据库,但它似乎应该更好.

    public IEnumerable<BlogPost> SearchBlogPosts(string query, int page, int itemsPerPage)
    {
        var result = _dataContext.BlogPosts
            .Where(BlogPostContains(query))
            .OrderByDescending(x => x.PostedDate)
            .Skip((page - 1) * itemsPerPage)
            .Take(itemsPerPage),
        return result;
    }

    private Func<BlogPost, bool> BlogPostContains(string query)
    {
        return x => x.Title.Contains(query) || x.Body.Contains(query) || x.Author.Contains(query);
    }
Run Code Online (Sandbox Code Playgroud)

与此相关的一个大问题是搜索区分大小写.

问题1)有没有更好的方法来搜索LINQ to Entities?

问题2)只用简单的SQL怎么样?我如何在SQL Server中编写搜索存储过程,以便我可以在EF而不是LINQ中映射和使用它?

我只想在数据库中执行不区分大小写的搜索,以保持良好的性能.

提前致谢.

c# linq linq-to-entities entity-framework entity-framework-4

6
推荐指数
1
解决办法
4623
查看次数

如何将可移植数据库添加到MVC应用程序?

我目前有一个ASP.NET MVC 3项目,以及一个我正计划开源的类库项目.在我这样做之前,我想稍微清理一下这个项目.我想做的一个修改是使用数据库.目前,该站点已发布到共享托管服务器,我在该服务器上设置了SQL数据库.但是,由于人们将分支项目并在本地运行它,我只想附加一个SQL Server express数据库或项目的一部分.我希望人们克隆存储库,打开项目,按F5并运行它.目前,他们必须设置SQL数据库并创建所有表和内容.

该解决方案包含两个项目:MvcUI和Domain.域是所有应用程序逻辑发生的地方.实际上,域是UI不可知的,这意味着它可以被桌面应用程序使用,就像Web应用程序一样容易.

我希望数据库成为Domain(类库)项目的一部分.我以前从未这样做过.如果有人能提供一个简单的解释,我将如何设置它,我会很激动.将数据库放在解决方案中是非常好的,因为我可以用一些基本数据预先填充它.我需要做什么才能将我的项目中的数据库作为数据库文件或什么不是?

c# sql sql-server asp.net asp.net-mvc

6
推荐指数
1
解决办法
1752
查看次数

在MVC 4.0中使用部分视图中的节

当我遇到需要在特定元素上初始化jQuery ui的情况时,我想在部分视图中包含脚本.它确实属于部分而不是包含页面或布局.

据说有一种方法可以在MVC 4中完成,但我似乎无法找到任何信息.

.net asp.net asp.net-mvc razor asp.net-mvc-4

6
推荐指数
1
解决办法
5686
查看次数

为什么他们在AngularJS中遍布数组?

考虑Brad Green的AngularJS的这个片段.

var directives = angular.module('guthub.directives', []);

directives.directive('butterbar', ['$rootScope',
    function ($rootScope) {
        return {
            link: function (scope, element, attrs) {
                element.addClass('hide');

                $rootScope.$on('$routeChangeStart', function () {
                    element.removeClass('hide');
                });

                $rootScope.$on('$routeChangeSuccess', function () {
                    element.addClass('hide');
                });
            }
        };
    }]
);

directives.directive('focus', function () {
    return {
        link: function (scope, element, attrs) {
            element[0].focus();
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

请注意,对于"butterbar"指令,他传入一个数组,其中第一项只是具有依赖项名称的字符串,"$rootScope"第二项是函数.该函数声明了依赖$rootScope.为什么我们在这里重复一遍?特别是当它似乎可以这样做时:

directives.directive('butterbar', function ($rootScope) {
    return {
        link: function (scope, element, attrs) {
            element.addClass('hide');

            $rootScope.$on('$routeChangeStart', function () {
                element.removeClass('hide');
            });

            $rootScope.$on('$routeChangeSuccess', …
Run Code Online (Sandbox Code Playgroud)

javascript dependency-injection angularjs angularjs-directive

6
推荐指数
1
解决办法
465
查看次数