草庐IT

c# - 存储库、管道、业务逻辑和域模型——我如何将它们组合在一起?

我在设计N层应用程序时遇到了一个难题,您可能有解决方案。表示层是MVC。我的ORM是使用LinqToSQL执行的-它是一个为存储库提供服务的独立项目。每个存储库都有一个接口(interface)和至少1个具体实现。Repositories有以下方法:FindAll(),Save(Tentity),Delete(intid)FindAll()返回某种类型的IQueryable,这意味着它返回我可以应用过滤器的查询。ORM映射是使用数据库优先方法执行的,首先创建表,然后由SQLMetal生成类。我添加了一个与存储库一起使用的管道层。它将进一步的过滤器应用于查询。例如。OrderReposi

c# - 在内存中加入时,LINQ 查询中的 "where"位置是否重要?

情况:假设我们正在执行连接两个内存列表的LINQ查询(因此不涉及DbSet或SQL查询生成)并且此查询也有一个where条款。此where仅过滤原始集中包含的属性(查询的from部分)。问题:linq查询解释器是否优化此查询,因为它首先执行where,然后再执行join,而不管是否我在join之前或之后写了where?–因此它不必对以后无论如何都不包含的元素执行连接。示例:例如,我有一个类别列表,我想加入一个产品列表。但是,我只对ID的category感兴趣1.无论我是否编写,linq解释器是否在内部执行完全相同的操作:fromcategoryincategoriesjoinprodi

c# - 在存储库模式中使用接口(interface)优于抽象类的优势?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:InterfacevsBaseclass使用接口(interface)实现的存储库模式很常见publicinterfaceIFooRepository{FooGetFoo(intID);}publicclassSQLFooRepository:IFooRepository{//CallDBandgetafoopublicFooGetFoo(intID){}}publicclassTestFooRepository:IFooRepository{//Getfoofromin-memorystorefortest

c# - 在内存集合和 EntityFramework 之间加入

是否有任何机制可以在保留顺序的同时在内存中的集合和EntityFramework之间进行JOIN。我正在尝试的是varitemsToAdd=myInMemoryList.Join(efRepo.All(),listitem=>listitem.RECORD_NUMBER,efRepoItem=>efRepoItem.RECORD_NUMBER,(left,right)=>right);这给了我一个相当奇怪的标题“此方法支持LINQtoEntities基础结构,不打算直接从您的代码中使用。”错误。现在我当然可以用类似的东西迭代地做到这一点foreach(variteminmyInMemo

c# - 如何对使用 Entity Framework 的存储库模式进行单元测试?

我目前正在尝试对通过EntityFramework创建的存储库进行单元测试:我想要发生的是在不实际发送/连接到实际数据库的情况下测试存储库,我希望在不使用任何模拟框架的情况下进行此操作。目前我的测试是将数据发送到数据库,我想做的是测试添加/删除等方法而不将实际数据发送到数据库,因为它仅用于测试。这是存储库:namespaceAbstractFactory.Repository{usingSystem.Collections.Generic;usingSystem.Data.Entity;usingSystem.Linq;//////Thisclassservesasthestructu

c# - Entity Framework + 存储库 + 工作单元

我正在考虑使用EF4开始一个新项目并浏览了一些文章,我发现了一些关于EF的文章以及存储库模式和工作单元(http://tdryan.blogspot.com/2011/03/another-entity-framework-4-repository_15.html和http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx)我使用的是第一个(第1部分、第2部分和第3部分)。它们非常相似。我是这种情况下

c# - 在C#中保存图像文件

我们如何在C#中保存图像文件(类型如jpg或png)? 最佳答案 在c#中,我们使用这些参数(字符串文件名、ImageFormat)的Image.Save方法http://msdn.microsoft.com/en-us/library/9t4syfhh.aspx这就是您所需要的吗?//Constructabitmapfromthebuttonimageresource.Bitmapbmp1=newBitmap(typeof(Button),"Button.bmp");//SavetheimageasaGIF.bmp1.Save("

C# - 从缓存中插入和删除

如果我通过赋值插入缓存:缓存["键"]=值;过期时间是多少?从缓存中删除相同的值:我想通过if(Cache["key"]!=null)检查值是否在缓存中,是否通过Cache.Remove("key")或Cache["key"]=null?--编辑--尝试Cache.Remove和Cache["key"]=null后,请勿使用Cache["key"]=null,因为它会在压力下使用时抛出异常。 最佳答案 1Cache["key"]=value等于Cache.Insert("key",value)MSDNCache.Insert-met

c# - 如何在 ListView 的组标题中保存 IsExpanded 状态

我有一个相当棘手的问题:我正在使用ListView控件,其中ItemsSource设置为CollectionViewSource,包括PropertyGroupDescription以对ListView元素进行分组。CollectionViewSource看起来像这样:在ListView中,我使用如下自定义组标题:如您所见,Expander的IsExpanded属性设置为true。这意味着每当ListView刷新时,所有Expander控件都会展开。但是我确实想保存每个Expander的最后状态。我还没有想出一种方法来保存每个ObjectType的扩展器状态列表。我正在尝试使用绑定(b

c# - 存储库模式中的 IQueryable 与 IEnumerable,延迟加载

我读过一些文章,指出IEnumerable用于模拟存储过程或限制您的数据库。失去了对外部提供商的延迟加载能力。IQueryable为开发人员提供了更大的灵active。那里有延迟加载。就性能而言,两者都消耗大量性能..那么哪个更可取? 最佳答案 从RepositoryPattern的角度,可以这样想:如果您想一次性将整个列表传递给客户端,请使用预加载IEnumerable。他们仍然可以添加linq子句,但客户端不会从延迟执行中受益。如果您希望通过允许客户端添加自己的linq子句将延迟查询功能扩展到客户端,请使用延迟加载IQuerya