Tag: 企业库

Microsoft Enterprise Library类型加载exception无法加载Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer

我正在尝试整理朋友服务。 基本上,一旦我在构造函数中启动它就会出错。 这是代码片段。 public class DefaultCacheManager : ICacheManager { private readonly Microsoft.Practices.EnterpriseLibrary.Caching.ICacheManager _cacheManager; public DefaultCacheManager() { //Code blows here _cacheManager = CacheFactory.GetCacheManager(); } 我得到的错误如下。 未处理的exception:System.TypeInitializationException:’Test.TypeManagement’的类型初始值设定项引发exception。 —> Microsoft.Practices.Unity.ResolutionFailedException:依赖项的解析失败,type =“Test.DefaultCacheManager”,name =“CacheManager”。发生exception时:调用构造函数Test.DefaultCacheManager()。 例外情况是:TypeLoadException – 无法从程序集“Microsoft.Practices.EnterpriseLibrary.Common,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”加载类型“Microsoft.Practices.EnterpriseLibrary.Common.Configuration.EnterpriseLibraryContainer”。 – – – – – – – – – – – – – – – – – […]

Microsoft企业库缓存应用程序块不是线程安全的?

我创建了一个超级简单的控制台应用程序来测试企业库缓存应用程序块,行为令人困惑。 我希望我搞砸了一些容易在设置中修复的东西。 为了测试目的,我让每个项目在5秒后过期。 基本设置 – “每秒选择0到2之间的数字。如果缓存还没有,请将其放在那里 – 否则只需从缓存中获取它。在LOCK语句中执行此操作以确保线程安全。 App.config中: C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Practices.EnterpriseLibrary.Common; using Microsoft.Practices.EnterpriseLibrary.Caching; using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations; namespace ConsoleApplication1 { class Program { public static ICacheManager cache = CacheFactory.GetCacheManager(“Cache Manager”); static void Main(string[] args) { while (true) { System.Threading.Thread.Sleep(1000); // sleep for one second. var key = new […]

如何使用SqlDataReader重新填充字节数组?

这是参考: byte []并通过引用有效传递 并且在这篇文章中找到了SqlDataReader : 使用SqlDataReader获取二进制数据 在循环中,我正在调用数据库并返回一个大对象( varbinary[max] )。 目前,我OutOfMemoryexception,所以我试图减少大对象堆(LOH)中的占用空间。 所以,我正在为我下载的最大文件创建一个字节数组,并添加一些填充以防万一。 例如: byte[] currentFile = new byte[largestFileSize * 1.1]; 然后我传递这个currentFile数据库方法。 目前,我们使用EnterpriseLibrary来访问数据库: DbCommand storedProcedure = MedicareDatabase.Db.GetStoredProcCommand(spName); storedProcedure.CommandTimeout = 5000; if (parameters != null) { foreach (Param parameter in parameters) { if (parameter != null) { MedicareDatabase.Db.AddInParameter(storedProcedure, parameter.ParameterName, parameter.DbType, parameter.Value); } } } try { BinaryWriter bw; […]

监控企业库缓存

我想监视我的应用程序在企业库缓存机制中存储的密钥名称和值。 我们正在使用内存设置。 基本上,我只需要弄清楚如何转储当前存储的密钥。 我看到ICacheManager返回一个具有计数器的对象,但除非您已经知道密钥,否则似乎没有办法访问缓存的项目。 想法?

使用企业库的ExecuteSprocAccessor方法和generics

我试图通过使用带有generics的.NET Enterprise Library的ExecuteSprocAccessor方法,使用一个类来处理数据库上的所有CRUD。 在我的数据层中,我尝试这样的事情: public static class CRUDDatabase { private static Database db = DatabaseFactory.CreateDatabase(“ITS”); public static T SelectSingle(string sprocName, int id) { return db.ExecuteSprocAccessor(sprocName, id).First(); } } 但是,我在SelectSingle()方法的返回行上得到一个构建错误,指出: ‘T’必须是具有公共无参数构造函数的非抽象类型,才能在generics类型或方法’Microsoft.Practices.EnterpriseLibrary.Data.DatabaseExtensions.ExecuteSprocAccessor(Microsoft.Practices.EnterpriseLibrary)中将其用作参数’TResult’。 Data.Database,string,params object [])’ SelectSingle()方法背后的想法是从数据库传入所需对象的存储过程名称和记录ID。 最终我会有SelectAll(),Update(),Delete()等。这些方法中的参数会有所不同,但你会明白我想要完成的任务。 在阅读了这个错误之后,我开始认为这可能是不可能的,但有人知道这是否可行? 此外,我的数据库中的字段与我的类中的字段匹配1:1,这就是为什么我没有指定任何映射器。 谢谢

entlib无效的TraceListenerData类型

我为Enterprise Library 5 Logging Block创建了一个自定义侦听器,它由配置编辑器识别,但会抛出运行时配置exception: 尝试使用自定义记录器 static IUnityContainer _container; static LogWriter _writer; static IServiceLocator _locator; public static void Inf(string message) { if (_container == null) { // Create the container _container = new UnityContainer(); // Configurator will read Enterprise Library configuration // and set up the container var configurator = new UnityContainerConfigurator(_container); // Configuration source […]

存储过程中的企业库缓存参数?

我正在尝试与同事一起标准化一些数据访问代码。 上述同事之一断言,EntLib数据访问块试图在存储的proc调用上缓存参数。 我看过reflection器,有一些证据表明它可以缓存它们。 但我不认为它会在以下情况下发生。 public Dictionary GetQueue(int maxItems) { var sq = new SqlDatabase(_connString.ConnectionString); var result = new Dictionary(); using (var cmd = (SqlCommand)sq.GetStoredProcCommand(“dbo.GetQueue”)) { sq.AddInParameter(cmd, “maxItems”, DbType.Int32, maxItems); var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { long id = reader.GetInt64(reader.GetOrdinal(“id”)); string fileName = reader.GetString(reader.GetOrdinal(“meta_data_filename”)); result.Add(id, fileName); } } return result; } 任何人都可以确认或否认这个吗? 我正在使用EntLib 4.1

如何“全局”捕获对象实例中抛出的exception

我目前正在编写一个winforms应用程序(C#)。 我正在使用企业库exception处理块,遵循我所看到的相当标准的方法。 IE:在Program.cs的Main方法中,我将事件处理程序连接到Application.ThreadException事件等。 这种方法运行良好,可以处理应用程序exception情况。 在我的一个业务对象中,我在其中一个对象属性的Set访问器中抛出了各种exception set { if (value > MaximumTrim) throw new CustomExceptions.InvalidTrimValue(“The value of the minimum trim…”); if (!availableSubMasterWidthSatisfiesAllPatterns(value)) throw new CustomExceptions.InvalidTrimValue(“Another message…”); _minimumTrim = value; } 我对这种方法的逻辑(不将其转换为“何时抛出exception”讨论)只是业务对象负责检查业务规则约束并抛出可以冒泡并根据需要捕获的exception。 应该注意的是,在我的应用程序的UI中,我明确地检查公共属性被设置的值(并在那里显示友好的对话框等操作)但是抛出exception我也覆盖了我的业务对象的情况可能不被UI使用,例如:该属性正由另一个业务对象设置。 无论如何,我想你们都明白了。 我的问题是这些exception没有被连接到Application.ThreadException的处理程序捕获,我不明白为什么。 从其他阅读中我已经完成了Application.ThreadException事件,它处理“…捕获主GUI线程上发生的任何exception”。 是否在我的业务对象中引发exception而不是在此线程中? 我还没有创建任何新线程。 如果我按如下方式更新代码,我可以使用该方法,明确调用连接到Application.ThreadException的事件处理程序。 这是Enterprise Library示例中概述的方法。 然而,这种方法要求我包装try catch中抛出的任何exception,这是我试图通过使用“全局”处理程序来避免的。 try { if (value > MaximumTrim) throw new CustomExceptions.InvalidTrimValue(“The value of the minimum…”); if […]

以编程方式访问Enterprise Library Logging配置(对象模型)?

我正在使用Enterprise Library 3.1,并希望以编程方式访问Logging Block (运行时,对象模型),特别是其Trace Listeners和Sources。 例如,我想访问跟踪侦听器对象的Filename属性,以便我可以知道日志文件在磁盘上的位置。 更新:查找使用运行时对象模型的答案,而不是通过解析XML配置。

Fluent-NHibernate是否支持映射到程序?

我一直想知道是否可以让Fluent-NHibernate与已经存在的存储过程进行通信,并将结果集中的映射分配给我自己的域对象。 也是Fluent-NHibernate能够直接执行没有返回结果集的程序吗? 基本上我一直在考虑使用Fluent-NHibernate来替换具有域驱动设计的日期TypedDataSet模型的含义,该设计可以从DAL返回简单对象。 如果Fluent-NHibernate不能轻松使用SP,我想我最喜欢的是一个组合DAL,它将利用FNH进行简单的CRUD操作,同时让复杂的程序由Enterprise Library管理。 虽然如果FNH不能很好地与SP配合使用,我认为拥有2个竞争DAL并不是最佳选择,我希望听到任何其他想法,而不是同时使用EntLib和FNH。