我有一个EF edmx(BaseEntities)。作为业务需求,我创建了两个名为的文件。 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();
}
}
答案 0 :(得分:1)
嗯,你当然 CAN 继承你的背景,但真正的问题是你为什么会这样做?
继承是一种用于创建“是一种”关系的概念。换句话说,您的QTDAL“是一个”BaseEntities。因此,您可以将QTDAL视为BaseEntities对象。您似乎没有那样使用它。相反,您似乎想要包装BaseEntities功能。
在这种情况下,您应该只使用BaseEntities作为QTDAL类的成员。