Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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#_Entity Framework_Entity Framework 5_Edmx - Fatal编程技术网

C# 这对EF上下文进行对象实例化是必要的吗

C# 这对EF上下文进行对象实例化是必要的吗,c#,entity-framework,entity-framework-5,edmx,C#,Entity Framework,Entity Framework 5,Edmx,我有一个EF edmx(基本实体)。根据业务需要,我创建了两个名为的文件。 QTDAL和AdminDAL 请参阅以下代码。我的两个类(QTDAL、AdminDAL)对BaseEntities的继承。(注意:我不确定是否允许这样做) (现在没有错误) 我想有建议,如果有任何更好的解决方案,以实现如下代码 有什么建议吗 public void TestMethod1() { IQTDAL qtContext = new QTDAL(); var value

我有一个EF edmx(基本实体)。根据业务需要,我创建了两个名为的文件。 QTDAL和AdminDAL

请参阅以下代码。我的两个类(QTDAL、AdminDAL)对BaseEntities的继承。(注意:我不确定是否允许这样做)

(现在没有错误) 我想有建议,如果有任何更好的解决方案,以实现如下代码

有什么建议吗

public void TestMethod1()
    {
        IQTDAL qtContext = new QTDAL();

        var value = qtContext.AllCampaigns().FirstOrDefault();
        //var value = qtContext.AddOrUpdateCampaign(TestCampaign);

        Assert.IsNotNull(value);
    }
示例:

    public partial class BaseEntities : DbContext
{
    public BaseEntities()
        : base("name=BaseEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Campaign> Campaigns { get; set; }
    public virtual DbSet<User> Users { get; set; }

}

    public class QTDAL : BaseEntities, IQTDAL
{
    public IEnumerable<Campaign> AllCampaigns()
    {
        return Campaigns.ToList();
    }

    public int AddOrUpdateCampaign(Campaign campaign)
    {
        Campaigns.AddOrUpdate(campaign);
        return SaveChanges();
    }

    public int DeleteCampaign(Campaign campaign)
    {
        Campaigns.Remove(campaign);
        return SaveChanges();
    }
}


    public class AdminDAL : BaseEntities, IAdminDAL
{
    public IEnumerable<User> AllUsers()
    {
        return Users;
    }

    public int AddOrUpdateUser(User user)
    {
        Users.AddOrUpdate(user);
        return SaveChanges();
    }

    public int DeleteUser(User user)
    {
        Users.Remove(user);
        return SaveChanges();
    }
}
公共部分类BaseEntities:DbContext
{
公共基础实体()
:base(“name=BaseEntities”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
抛出新代码FirstException();
}
公共虚拟数据库集活动{get;set;}
公共虚拟数据库集用户{get;set;}
}
公共类QTDAL:基本实体,IQTDAL
{
公共IEnumerable AllCampaigns()
{
返回活动。ToList();
}
public int AddOrUpdateCampaign(活动)
{
活动。添加或更新(活动);
返回SaveChanges();
}
公共活动(活动)
{
运动。移除(运动);
返回SaveChanges();
}
}
公共类AdminDAL:BaseEntities,IAdminDAL
{
公共IEnumerable诱惑者()
{
返回用户;
}
public int AddOrUpdateUser(用户)
{
Users.AddOrUpdate(用户);
返回SaveChanges();
}
公共int DeleteUser(用户)
{
用户。删除(用户);
返回SaveChanges();
}
}
当然,您可以从上下文继承,但真正的问题是您为什么要继承

继承是一个用于创建“是”关系的概念。换句话说,您的QTDAL“是”BaseEntities。因此,可以将QTDAL视为BaseEntities对象。您似乎没有这样使用它。相反,您似乎想要包装BaseEntities功能

在这种情况下,只需将BaseEntities用作QTDAL类的成员