Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将相应的非数据库类添加到实体框架对象_C#_Entity Framework_Entity Framework Core - Fatal编程技术网

C# 将相应的非数据库类添加到实体框架对象

C# 将相应的非数据库类添加到实体框架对象,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,我目前正在使用EntityFrameworkCore 2.0.0 我正在创建的应用程序是一个在线商店产品刮板。所有存储都保存在数据库中,每个存储都有一个刮板,用于实现IStoreScraper 这是我的商店模式: public class Store { public int Id { get; set; } public string Name { get; set; } [NotMapped] public IStoreScraper StoreScrap

我目前正在使用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
对象中。通过数据库中的值或其他内容

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


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

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


不过,我强烈建议不要这样做。EF是您的数据模型,您应该在上面有一个业务层,这是添加类似依赖项的正确位置。

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


不过,我强烈建议不要这样做。EF应该是您的数据模型,您应该在上面有一个业务层,这是添加此类依赖项的正确位置。

好的,假设我创建了一个
StoreFacade
类,我将store对象交给它,它处理与各种刮板的通信,如何为每门课找到正确的刮刀是最好的方法?这完全取决于你的要求,有点太宽泛了,我们无法回答。。。您提到这可能取决于数据库中存储的值,它是针对实体本身存储的吗?在这种情况下,您只需查找相关的scraper,可能是通过从数据库传入值的字典,或者以其他任何方式将其赋值。。。我再次建议您不要这样做,而是在EF模型的顶部选择一个业务层,但这种方法应该可以很好地工作……您真的需要针对实体存储IStoreScaper吗??似乎这应该作为参数传递给执行刮片的任何方法(或者理想情况下作为执行刮片的服务的依赖项)。。。i、 e.无论如何-比存储域对象更高的级别。我会认真考虑重新思考你的DISGIOKEAY,比如说我制作了一个