我如何分离这个实体框架模型来防止内存错误
本文关键字:模型 框架 错误 内存 实体 何分离 分离 | 更新日期: 2023-09-27 18:09:58
我正试图与一组数据从遗留的应用程序工作,并将其移动到MSSQL数据库。我用c#和EF创建了一个应用程序来管理数据。这个类的结构代表了旧的C风格数组,但是有一些类的顺序。
这是三个主要的类。其他属性涉及,但我只包括主要的形式和内存占用(AccountDetails)在这里。当这个结构被构建出来时,它有一个模拟-从50到100个帐户,然后每个帐户有1000个或更多的帐户详细对象。
如果我一次添加整个结构-并保存更改,我会得到内存错误。我如何添加我所有的AccountDetail对象,并保持它链接为一个对象结构?我可以单独添加它们(我有所有的ID和一个到许多的设置正确,虽然不是所有的细节都包括在这里)。
public class Simulation
{
public string Name { get; set; }
public List<Account> Accounts { get; set; }
}
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public int Type { get; set; }
public List<AccountDetail> Details { get; set; }
}
// trouble in here....
public class AccountDetail
{
public int Id { get; set; }
public int Type { get; set; }
public int Scenario { get; set; }
public double M01 { get; set; }
..... class has 60 doubles for 5 years of payments ....
public double M60 { get; set; }
}
谢谢,
k .
好吧,既然你有所有的id。
-
创建仿真对象并只填充非导航属性(如int, double等)保存更改
-
创建帐户列表并仅使用非导航属性填充它,但确保填写了SimulationID(或您用于将帐户链接到模拟的外键)。保存更改。
-
创建AccountDetails列表,仅用非导航属性填充它,但确保填写AccountID(或用于将帐户详细信息链接到帐户的外键)
在实体框架中,你不需要所有的对象都在内存中。重要的是外键。现在,如果您愿意,您可以通过一次只保存10个帐户来节省内存。但说实话,我还没有看到EF抱怨内存,所以这就提出了问题……你把一切都设置好了吗?