Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 性能问题:实体框架_.net_Performance_Entity Framework 4 - Fatal编程技术网

.net 性能问题:实体框架

.net 性能问题:实体框架,.net,performance,entity-framework-4,.net,Performance,Entity Framework 4,我的DataLayer GetCompany中有一个静态方法。我之所以这样做是因为我需要一个公司对象来与财产进行比较。问题是对于以下代码,我应该创建另一个对象并将返回的Company对象分配给它,还是只在条件中使用它 根据性能,哪种方法是最好的 if (property != null && property.CompanyNum > 0) { if (property is PersonalDetail && (Property.G

我的DataLayer GetCompany中有一个静态方法。我之所以这样做是因为我需要一个公司对象来与财产进行比较。问题是对于以下代码,我应该创建另一个对象并将返回的Company对象分配给它,还是只在条件中使用它

根据性能,哪种方法是最好的

if (property != null && property.CompanyNum > 0)
{
    if (property is PersonalDetail &&
        (Property.GetCompany(property.CompanyNum)).
            CompanyType.ToUpper() != "COI")
    {
        if (property.TaxSubTypeId != 19)
        {
            if (property.CompanyNum == 81 && property.TaxSubTypeId == 11)
            {
                // Tax Sub Type of Compressor & Company Name
                // Midcon Compression LLC 
                SetPersonalNonCOI81Inputs();
            }
        }
    }
}

下面我有很多条件,所以我只提到其中的两个。请告诉我如何优化它。

这听起来像是一个问题。如果您的GetCompany方法没有经常被调用,那么您就没有什么可担心的了

但是,从您的列表中可以看出,Property.GetCompany调用可能会转到数据库以检索comapny信息,因此,如果您在每个用户请求中多次调用此方法,那么在访问此属性的代码中缓存返回值可能是有意义的


您可能遇到的另一个问题是,对SetPersonalNonCOI81Inputs的调用可能会修改某些全局状态值,因为它是从静态GetCompany方法调用的。这将导致多线程环境中出现问题(假设这是一个web应用程序),因为您可以同时修改共享状态值。因此,您可能希望删除SetPersonalNonCOI81Inputs方法,并在那里简单地返回一个新对象

还有比性能更严重的问题。首先测量性能并找出瓶颈所在。SetNONCOI81。。。是一种分离层方法,它不需要做任何事情。但这里的问题是,我只需要一个公司类型来获得有效条件。这就是为什么我创建这个方法只是为了检查公司的类型,静态方法与不修改无关,在这种情况下,你应该不用担心。在此代码中评估的条件对性能的影响可以忽略不计。