我有一个.NET 4类库,它包含一个Entity Framework数据模型和一组使用这些实体提供通用功能的类。这些类用于不同类型的应用程序。
所以,我的问题是将类库中包含的实体暴露给其他应用程序会被视为好习惯吗?
答案 0 :(得分:1)
如果您的实体足够先进以满足您的持久性需求和您的域名需求(或外部应用程序需求),并且“跨层污染”的可能性不大或很低,那么我说是的,这是一个很好的做法。它在敏捷开发意义上也是一种很好的做法:现在足够好了。
考虑到更长的时间,如果纯粹主义者更倾向于你,那么它开始变得不好,因为你增加了耦合,例如,如果你开始添加属性来处理持久性,验证,和序列化。
避免这种情况的一些方法是使用AutoMapper,生成的代码或手工编码的外观,服务层和/或适配器等方法来最小化效果。
答案 1 :(得分:0)
因为只要数据库发生变化,实体框架就会发生变化,我认为这不会提供足够的API。相反,我建议创建一个数据传输对象,作为外部代码和需要访问的每个实体之间的中介。此外,考虑创建一个Facade类(服务层),它将在库的内部和外部“客户端”之间进行调解。关于DTO的好文章:http://msdn.microsoft.com/en-us/magazine/ee236638.aspx