2017-08-16 76 views
1

我目前使用的是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对象时是从数据库中获取。要么来自数据库的值或其他东西。

我也研究过在模型的构造函数中注入它,但是这违反了依赖注入模式,因为每个类都有自己的已知实现。

也许我应该从另一个角度来看它,因为这段代码不应该在模型类中?有任何想法吗?

回答

0

您可以覆盖对象物化事件并将其添加到此处,如本答案中所述;

How to Inject Helper Dependencies in Domain Model Entity Classes

不过,我会强烈建议反对这一点。 EF旨在成为您的数据模型,您应该有一个高于此的业务层,这是添加这样的依赖关系的正确位置。

+0

好吧,假设我创建了一个StoreFacade类,我给商店对象并处理与各种刮板的通信,如何才能为每个类获取正确的刮板? – Jerodev

+0

那么这完全取决于您的要求,我们回答的范围太广泛了......您提到过,这可能取决于存储在数据库中的值,它是否针对实体本身进行存储?在这种情况下,您只需查找相关的刮板,或者从Dictionary 传入数据库中的值,或者以其他方式分配它...再次,我会建议不要这样做,而宁愿选择Business您的EF模型的层ontop,但这种方法应该工作正常... – Milney

+1

你实际上需要存储的IStoreScaper对实体?看起来,这应当作为参数传递给任何方法执行抓取(或理想地作为对执行抓取的服务的依赖性)......即无论如何 - 比存储域对象更高的级别。我会认真考虑重新考虑你的设计 – Milney

相关问题