.net 性能问题:实体框架
我的DataLayer GetCompany中有一个静态方法。我之所以这样做是因为我需要一个公司对象来与财产进行比较。问题是对于以下代码,我应该创建另一个对象并将返回的Company对象分配给它,还是只在条件中使用它 根据性能,哪种方法是最好的.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
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。。。是一种分离层方法,它不需要做任何事情。但这里的问题是,我只需要一个公司类型来获得有效条件。这就是为什么我创建这个方法只是为了检查公司的类型,静态方法与不修改无关,在这种情况下,你应该不用担心。在此代码中评估的条件对性能的影响可以忽略不计。