处理实体框架中数据库对象的基本/完整检索

本文关键字:检索 框架 实体 数据库 对象 处理 | 更新日期: 2023-09-27 18:11:48

我有一个客户表在数据库中存储的名称,地址等,随着一些照片,标志和其他图像。

我正在使用entity framework,我想知道如何解决我只想在某些情况下带回有关客户的基本数据与包括图像在内的完整数据的情况。

我应该有两个实体,CustomerBasic和CustomerComplete

有一个Customer实体,并用两个独立的方法填充它,FillBasic, FillComplete。

有没有最佳实践?我是新来的。

处理实体框架中数据库对象的基本/完整检索

这实际上取决于您的存储库结构(如果有的话)-对于EF本身,您可以使用带有您想要的属性的投影来表示"基本客户"的业务对象实例,即

var customerBasicList = context.Customers
                               .Where(...)
                               .Select( c => new CustomerBasic() 
                               {
                                 FirstName = c.FirstName,
                                 LastName = c.LastName,
                               }).ToList();

性能变得更加重要,当你有一个集合属性(即图像在你的例子)在你的实体。在您的情况下,您可以利用延迟加载,仅在需要时实现这些属性。

我认为您可以通过使用select子句投射查询来完成您想要的。例如(摘自本文)

using(AdventureWorksDB aw = new 
AdventureWorksDB(Settings.Default.AdventureWorks)) {
    var newSalesPeople = from p in aw.SalesPeople
                         where p.HireDate > hireDate
                         orderby p.HireDate, p.FirstName
                         select new { Name = p.FirstName + " " + p.LastName,
                                      HireDate = p.HireDate };
    foreach(SalesPerson p in newSalesPeople) {
        Console.WriteLine("{0}'t{1}", p.FirstName, p.LastName);
    }
}