Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 在业务层中插入/更新/删除EF_C#_.net_Entity Framework - Fatal编程技术网

C# 在业务层中插入/更新/删除EF

C# 在业务层中插入/更新/删除EF,c#,.net,entity-framework,C#,.net,Entity Framework,我不能接受我们需要在所有POCO/bl对象中重新创建插入/更新/删除功能的想法?EF和linq2sql本身就有这样好的内置功能 你们如何有效地解决这个问题?在IQueryable POCO中使用基类或某些魔法 .NET 4由于实体框架/Linq对象可能是从某个基类继承的,因此您可以从单个基类继承业务层中的对象。然后像这样做: public class BusinessBaseCollection { protected EFBaseCollection _efObject = null;

我不能接受我们需要在所有POCO/bl对象中重新创建插入/更新/删除功能的想法?EF和linq2sql本身就有这样好的内置功能

你们如何有效地解决这个问题?在IQueryable POCO中使用基类或某些魔法


.NET 4

由于实体框架/Linq对象可能是从某个基类继承的,因此您可以从单个基类继承业务层中的对象。然后像这样做:

public class BusinessBaseCollection
{
    protected EFBaseCollection _efObject = null;

    public BusinessBaseCollection(EFBaseCollection efObject)
    {
        _efObject = efObject;
    }

    public Add(BusinessBase obj)
    {
        _efObject.Add(obj);
    }

    //Add other CRUD stuff here
}

我觉得这很有趣。正如你所说。这些方法已经存在了,我不明白我们为什么要重做它们。尽管如此,我所有针对EF的智能BL的尝试都是非常不清楚和狡猾的。一个非常可怕的结果是,当我尝试这样一个基本对象时,我必须将数据层程序集引用到应用程序中(如您上面所建议的)。我是不是遗漏了一些基本的东西?为什么业务部门不能把这一点牢记在心呢?只有正常情况下,如果您以某种形式使用EF基类,那么您需要引用它的程序集。没有?至于必须重做,那对你来说是分层的。每次更改都需要重复x次。干的就这么多。然而,使用实体框架,您可以更多地控制(使用T4)并可能从一些中心基类派生。所有这些都是“如果,也许”,谢谢。除此之外我什么都不能做,但我对此不太满意。如果所有的业务层都告诉我“嗨,应用程序X!我明白了。我给了你paket,但你必须自己从DAL那里得到它,那么为什么我要创建一个与业务层对话的解决方案呢?”。一定要有工作吗?