我是第一次使用实体框架,并想知道我是否在最佳实践中使用.
我在业务逻辑中创建了一个单独的类来处理实体上下文.我遇到的问题是,在我看到的所有视频中,他们通常将上下文包装在using语句中以确保其关闭,但显然我不能在我的业务逻辑中执行此操作,因为上下文将在我实际关闭之前关闭用它?
所以我正在做什么呢?几个例子:
public IEnumerable<Article> GetLatestArticles(bool Authorised)
{
var ctx = new ArticleNetEntities();
return ctx.Articles.Where(x => x.IsApproved == Authorised).OrderBy(x => x.ArticleDate);
}
public IEnumerable<Article> GetArticlesByMember(int MemberId, bool Authorised)
{
var ctx = new ArticleNetEntities();
return ctx.Articles.Where(x => x.MemberID == MemberId && x.IsApproved == Authorised).OrderBy(x => x.ArticleDate);
}
Run Code Online (Sandbox Code Playgroud)
我只是想确保当很多人使用它时,我不会构建一些会死的东西?
我有很多系统使用WPF和MVVM.对于单元测试,我们将依赖项注入View模型,但是我发现在构造时注入依赖类时,我们无法控制依赖对象的生命周期,例如Entity Framework DbContext.
一个简单的场景如下:
public class FooVM
{
private readonly IBarService _barService;
// Set in the UI via Databinding
public string Name { get; set; }
public string OtherName { get; set; }
public FooVM(IBarService barService)
{
_barService = barService;
}
public void SaveFoo()
{
_barService.SaveFoo(Name);
}
public void SaveBar()
{
_barService.SaveBar(OtherName);
}
}
public class BarService : IBarService
{
private readonly IEntityContext _entityContext;
public BarService(IEntityContext entityContext)
{
_entityContext = entityContext;
}
public void SaveFoo(string name)
{
// some EF …Run Code Online (Sandbox Code Playgroud) c# entity-framework dependency-injection mvvm service-locator