将相应的非数据库类添加到实体框架对象
问题描述:
我目前使用的是EntityFrameworkCore 2.0.0。将相应的非数据库类添加到实体框架对象
我创建的应用程序是一个在线商店产品刮板。所有商店都保存在数据库中,每家商店都有一个执行IStoreScraper
的刮板。
这是我的专卖店模式:
public class Store
{
public int Id { get; set; }
public string Name { get; set; }
[NotMapped]
public IStoreScraper StoreScraper { get; set; }
}
我想知道是否有可能正确IStoreScraper
对象添加到Store
对象时是从数据库中获取。要么来自数据库的值或其他东西。
我也研究过在模型的构造函数中注入它,但是这违反了依赖注入模式,因为每个类都有自己的已知实现。
也许我应该从另一个角度来看它,因为这段代码不应该在模型类中?有任何想法吗?
答
您可以覆盖对象物化事件并将其添加到此处,如本答案中所述;
How to Inject Helper Dependencies in Domain Model Entity Classes
不过,我会强烈建议反对这一点。 EF旨在成为您的数据模型,您应该有一个高于此的业务层,这是添加这样的依赖关系的正确位置。
好吧,假设我创建了一个StoreFacade类,我给商店对象并处理与各种刮板的通信,如何才能为每个类获取正确的刮板? – Jerodev
那么这完全取决于您的要求,我们回答的范围太广泛了......您提到过,这可能取决于存储在数据库中的值,它是否针对实体本身进行存储?在这种情况下,您只需查找相关的刮板,或者从Dictionary传入数据库中的值,或者以其他方式分配它...再次,我会建议不要这样做,而宁愿选择Business您的EF模型的层ontop,但这种方法应该工作正常... –
Milney
你实际上需要存储的IStoreScaper对实体?看起来,这应当作为参数传递给任何方法执行抓取(或理想地作为对执行抓取的服务的依赖性)......即无论如何 - 比存储域对象更高的级别。我会认真考虑重新考虑你的设计 – Milney