我有一个包含三个项目的解决方案。其中一个项目需要很长时间才能构建,我将其范围缩小到了初始化数据,尤其是一大批郊区对象。
以下是APISuburbInitialiser类,但尤其是郊区数组-这是问题所在:
using JobsLedger.API.InitalisationData.Interfaces;
using JobsLedger.DATA;
using JobsLedger.DATA.Entities;
using System.Linq;
namespace JobsLedger.API.InitalisationData {
public class APISuburbInitialiser : IAPISuburbInitialiser {
public void InitialiseStaInitialiseStatesAndSuburbs(APIDbContext context) {
InitialiseStates(context);
InitialiseSuburbs(context);
}
private void InitialiseStates(APIDbContext context) {
// Look for any students.
if (context.States.Any()) {
return; //DB table data already created.
}
var states = new State[]
{
new State { StateName = "New South Wales", StateShortName = "NSW" },
new State { StateName = "Victoria", StateShortName = "VIC" },
new State { StateName = "Queensland", StateShortName = "QLD" },
new State { StateName = "South Australia", StateShortName = "SA" },
new State { StateName = "Western Australia", StateShortName = "WA" },
new State { StateName = "Tasmania", StateShortName = "TAS" },
new State { StateName = "Nothern Territory", StateShortName = "NT" },
new State { StateName = "Australian Captial Territory", StateShortName = "ACT" }
};
foreach (State s in states) {
context.States.Add(s);
}
context.SaveChanges();
}
private void InitialiseSuburbs(APIDbContext context) {
// Look for any suburbs.
if (context.Suburbs.Any()) {
return; //DB table data already created.
}
// Upgraded due to database arbritarily assigning Id keys to states in different order.
var stateID = context.States.FirstOrDefault(s => s.StateShortName == "ACT").Id;
var suburbs = new Suburb[] {
new Suburb { PostCode = "200", SuburbName = "Australian National University", StateId = stateID, Latitude = -35.2777, Longditude = 149.1189 },
new Suburb { PostCode = "221", SuburbName = "Barton", StateId = stateID, Latitude = -35.3049, Longditude = 149.14124 },
new Suburb { PostCode = "2540", SuburbName = "Hmas Creswell", StateId = stateID, Latitude = -35.028, Longditude = 150.55013 },
new Suburb { PostCode = "2540", SuburbName = "Jervis Bay", StateId = stateID, Latitude = -35.028, Longditude = 150.55014 },
new Suburb { PostCode = "2540", SuburbName = "Wreck Bay", StateId = stateID, Latitude = -35.0169, Longditude = 150.63193 },
new Suburb { PostCode = "2600", SuburbName = "Duntroon", StateId = stateID, Latitude = -35.3, Longditude = 149.16674 },
new Suburb { PostCode = "2600", SuburbName = "Russell", StateId = stateID, Latitude = -35.2977, Longditude = 149.1514 },
new Suburb { PostCode = "2600", SuburbName = "Harman", StateId = stateID, Latitude = -35.3053, Longditude = 149.13654 },
new Suburb { PostCode = "2600", SuburbName = "Hmas Harman", StateId = stateID, Latitude = -35.31, Longditude = 149.13853 },
new Suburb { PostCode = "2600", SuburbName = "Deakin", StateId = stateID, Latitude = -35.3193, Longditude = 149.10314 },
new Suburb { PostCode = "2600", SuburbName = "Parliament House", StateId = stateID, Latitude = -35.3126, Longditude = 149.12783 },
new Suburb { PostCode = "2600", SuburbName = "Yarralumla", StateId = stateID, Latitude = -35.2998, Longditude = 149.10584 },
...
郊区如下:
using JobsLedger.CATALOG.Entities.Interfaces;
using System.Collections.Generic;
namespace JobsLedger.CATALOG.Entities
{
public class Suburb : IEntityBase
{
public Suburb()
{
Tenants = new List<Tenant>();
Users = new List<User>();
}
public int Id { get; set; }
public string SuburbName { get; set; }
public string PostCode { get; set; }
public double Latitude { get; set; }
public double Longditude { get; set; }
// One state to many suburbs
public int StateId { get; set; }
public State State { get; set; }
public virtual ICollection<Tenant> Tenants { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
有16000个奇怪的郊区,我使用此数组在数据库中填充了所有郊区的表。
我刚刚发现的是,这一系列的郊区(以及另一个初始化类中的1000个客户)使该项目的构建花费了很长时间-实际上是几分钟。取消这些课程,构建几乎不需要时间。
有没有一种方法可以在项目中使用它(或在运行时以另一种方式加载此数据),以免导致构建花费几分钟。
更新
我最初选择创建两个新项目-一个用于Initializations(供所有数据库使用-它是一个租户的系统),另一个用于testdata-仅针对一个数据库。然后,我进一步创建了另一个授权项目。这样,我可以消除所有其他项目(或其中一些项目)正在访问的那些代码部分,并使它们停滞不前,需要一个构建。这样做确实有助于我了解项目之间的依赖关系工作方式。
c#大神给出的解决方案
将郊区init移到另一个项目中。然后将对其进行一次编译,但并非每次您对其他项目进行更改时都将进行编译。
或将邮政编码/名称信息移到资源文件中。在启动时阅读它,这应该使其构建更快。
我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
将python scikit学习模型导出到pmml - python我想将python scikit-learn模型导出到PMML。哪个python软件包最合适?我阅读了有关Augustus的内容,但是我无法使用scikit-learn模型找到任何示例。 python大神给出的解决方案 SkLearn2PMML是 JPMML-SkLearn命令行应用程序周围的薄包装。有关受支持的Scikit-Learn Estimator和…
Visual Studio Code可以增量编译Java Web App项目吗? - java我是Visual Studio Code的新手。我正在尝试将其与使用Maven的现有Java Web应用程序项目一起使用。我已经下载了推荐的Java扩展,例如Java Extension Pack,Java Maven和Java Tomcat。在IntelliJ(我通常的IDE)中,我可以很快地从Java的少量编辑转到Tomcat中刷新的WAR。如果我编辑文…
在熊猫中,如何从单词列表或单词集中选择数据框中的短语? - python在Python3和熊猫中,我具有数据框:df_projetos_api_final.info() <class 'pandas.core.frame.DataFrame'> Int64Index: 93631 entries, 1 to 93667 Data columns (total 21 columns): AnoMat…
尝试在Spring MVC中使用OAuth保护资源 - java我们已经有在Spring MVC上用Java编写的REST Web服务,我一直在尝试保护它们。OAuth服务器是在另一个处理访问令牌登录和创建的网站中实现的。因此,在向用户授予对Web服务的访问权限之前,我需要验证访问令牌是否正确。但是,带有OAuth的Spring Security的文档似乎真的很差,并且示例代码实际上并未解释其作用!我什至不确定是否应该为…