我有 ADO.NET 背景,这是我第一次在一个严肃的项目中使用实体框架,所以我继续使用 VS2012 并使用 .NET 4.5 和实体框架 5。
我采用数据优先方法并创建了数据库,生成了 .edmx 并使用此方法将 POCOS 从上下文中分离出来:http: //allen-conway-dotnet.blogspot.co.uk/2013/01 /separating-entity-framework-poco.html
所以我的解决方案如下所示:
Data.Access (where I access the EF context and return POCOS to Business Layer)
Data.Model (where the POCOs are)
Data.Repository (where the context sites)
Presentation.Admin.Website
现在说我在数据库/ POCO 类中有下表(只是一个例子 - 不是真实的)
namespace Data.Model
{
using System;
using System.Collections.Generic;
public partial class Car
{
public Car()
{
this.Parts= new HashSet<Parts>();
}
public int ID { get; set; }
public string Manufacturer { get; set; }
public string Model{ get; set; }
public Nullable<bool> Enabled { get; set; }
public virtual ICollection<Parts> Parts{ get; set; }
}
}
现在假设数据库中的所有汽车都有一个 Web 服务,甚至只是一个指向返回 XML 并给我可用部件列表的 URL 的链接。每辆车检索零件数据的方式都不同(一些是 REST,一些是 WCF,一些来自 CSV 文件等)。
所以我想定义扩展 Car 的类并定义一个“GetParts()”方法,该方法将具有特定的业务逻辑来获取该特定汽车的零件。
我还希望能够从数据库中获取所有汽车并循环它们,为每辆汽车调用 GetParts 方法来检索数据。
我在想我需要定义一个接口或抽象类 ICar 来声明 GetParts 方法并以某种方式合并 Car POCO,但对如何进行编码感到困惑。
谁能简要解释一下我如何构建我的代码来完成这项工作,也许建议一种设计模式?