我使用企业库来实现基于盖伊伯斯坦的博客文章例外屏蔽这里.我的实现基本上与他的相同,但是我有几个问题:
1:异常屏蔽的目的是不通过错误的确切细节,为什么映射指定从原始异常传递消息不变.什么是提供不太具体的消息的合理方式?
2:传回的faultexception包含来自原始异常的消息,因此无论我设法在故障合同中包装或返回什么,都可以获得有关故障的详细信息.有没有办法将信息删回回通用的"内部错误"消息.
请注意,如果我不使用[ExceptionShielding]和[FaultContract]属性,则服务将返回标准"服务器由于内部错误而无法处理请求"消息.
我安装了Entlib 5.
在现有的WCF应用程序中,我看到"编辑wcf配置"
但我没有看到"编辑企业库V5配置" - 任何想法为什么它丢失?
我正在努力开始团结,我正在寻找这个特殊问题的帮助:我已经了解了依赖注入/统一是什么以及如何以编程方式执行此操作但我不明白当成员填充时如何/何时填充标有Dependency-Attribute.
class Program
{
static Program()
{
uContainer = new UnityContainer();
var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(uContainer);
}
private static IUnityContainer uContainer;
[InjectionMethod]
public static void InjectTrace(ITraceManager traceManager)
{
trace = traceManager;
}
[Dependency]
public static ITraceManager trace { get; set; }// = /*new WebTraceManager("C:\\","trace",true);//*/new EnterpriseLibaryLoggingWrapper(false);
static void Main(string[] args)
{
//Programmatically inject dependency
// TODO: Do this via attributes
//UnityContainer myContainer = new UnityContainer();
//UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
//section.Containers["containerOne"].Configure(myContainer);
//trace = myContainer.Resolve<ITraceManager>();
trace.ProgramStatus("Start");
trace.ProgramStatus("End");
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
Main中以编程方式设置trace属性的未注释部分工作正常.但是使用属性"Dependency"将不会填充该属性.是否缺少对统一容器的调用?谢谢您的帮助.
根据Steve的建议,我改变了示例,使用实例而不是静态类:
static …Run Code Online (Sandbox Code Playgroud) 有没有办法用Enterpise Library执行SQL自定义函数?我已经尝试过Database.ExecuteScalar()但由于某种原因它返回null.
这是我的功能:
Database db = DatabaseFactory.CreateDatabase("ConnectionString");
DbCommand cmd = db.GetStoredProcCommand("FunctionName");
db.AddInParameter(cmd, "Value1", DbType.String, Param1Value);
db.AddInParameter(cmd, "Value2", DbType.String, Param2Value);
return Convert.ToBoolean(db.ExecuteScalar(cmd));
Run Code Online (Sandbox Code Playgroud)
这里db.ExecuteScalar(cmd)方法返回null.存储过程不会发生这种情况.
顺便说一下,即时通讯使用4.0版
谢谢.
是否可以将某些事件记录到 - >事件日志,例如,而其他事件记录到 - >文件跟踪侦听器,而其他事件仍然是 - > SQL数据库.
我希望能够在某处配置此错误,以便将错误转到文本,将详细信息转到SQL,并将警告转到(事件查看器和文本).
这类事可能吗?
我开始一个新项目,我需要创建一个项目来实现Entity Framework 4.0和Unity Framework 2.0以及Enterprise Library 5.0.
我是Entity Framework和Unity Framework的新手,并且对如何使用数据库获取正常的Object BO和DAL感到困惑.
有人能指出我在同一个项目中开始的一些简单例子.后来我需要将ASP.NET MVC 2.0用于UI.
我已经看过Julie Lerman的视频实体框架我可以将桌子作为实体获得,但之后我不知道Unity,Enterprise Library将适用于哪里.之后我迷失了.
有人请帮助我.
asp.net-mvc entity-framework enterprise-library unity-container
我正在使用企业库进行日志记录.所以,为了保持我的配置,我正在使用客户端的app.config.该要求已更改为"拆分EL配置和UI配置".我使用enterpriseLibrary.ConfigurationSource做到了.将配置拆分为app.config(对于UI)和EL.config(对于EL).
现在我想从app.cpnfig中隐藏对这个EL.config的引用,这样就不会对用户隐藏这个EL> config的存在.
App.config代码:
<enterpriseLibrary.ConfigurationSource selectedSource="EntLib Configuration Source">
<sources>
<add name="EntLib Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
filePath="C:\My.CommonServices.Logging\My.CommonServices.Logging\EL.config" />
</sources>
Run Code Online (Sandbox Code Playgroud)
我使用企业库,我有一个问题:
string sql = "
UPDATE StackOverflow SET UserName = @UserName
WHERE Id = @Id
";
DbCommand cmd = base.Database.GetSqlStringCommand(sql);
base.Database.AddInParameter(cmd, "Id", DbType.Int32, StackOverflow.Id);
base.Database.AddInParameter(cmd, "UserName", DbType.Int32, StackOverflow.UserName);
int val = Convert.ToInt32(base.Database.ExecuteScalar(cmd));
Convert.ToInt32(base.Database.ExecuteScalar(cmd)) //returns 0.
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇文章http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx
文章说:
如果插入了新行,函数将返回新的Identity列值,失败时返回0.
但我没有插入该表 - 我只想更新并返回更新的行ID.
我已经实现了工作单元/存储库模式,如此处所述,但我还使用 autofac 和构造函数注入,因此我注册了 UnitOfWork 和 DbContext (PsyProfContext) 类,如下所示:
builder.Register(context => new PsyProfContext()).InstancePerHttpRequest();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)
一切都很好!
除了一件事:我还使用企业库日志记录块,并且我已经实现了 CustomTraceListener,它使用实体框架将日志条目写入数据库。
我的控制器看起来像这样(它是空的,因为目前我只是尝试验证所有东西(IoC、日志记录、实体框架)是否正常工作):
public class HomeController : Controller
{
private readonly UnitOfWork unitOfWork;
public HomeController(IUnitOfWork unitOfWork)
{
this.unitOfWork = (UnitOfWork) unitOfWork;
}
//
// GET: /Home/
public ActionResult Index()
{
throw new HttpException();
return View();
}
protected override void Dispose(bool disposing)
{
unitOfWork.Dispose();
base.Dispose(disposing);
}
}
Run Code Online (Sandbox Code Playgroud)
在 CustomTraceListener 类的 Write 方法中,我尝试解析 UnitOfWork:
DependencyResolver.Current.GetService<IUnitOfWork>() as UnitOfWork;
Run Code Online (Sandbox Code Playgroud)
但我得到一个已经被处置的实例!所以我设置了一些断点,发现控制器的Dispose方法是在CustomTraceListener类的Write方法之前调用的,所以最后我除了直接使用DbContext(PsyProfContext)之外没有找到其他解决方案:
public override void Write(object o)
{ …Run Code Online (Sandbox Code Playgroud) enterprise-library unit-of-work autofac repository-pattern asp.net-mvc-4
简短的说明,
我在.net中的技巧被称为"创新",但我更希望它是典型的.基本上,我需要一位导师.我拥有域名codeologist.com,我将不辜负这个名字,但为了做到这一点,我需要一个导师和社区.
关于问题:
实体框架 - 我想这是一个强大的框架,它映射工厂中的对象,同时保留系统内对象的完整性和状态.至少,这就是我听过的播客大约15分钟时所能听到的.RTFM我知道,但这是一个正确的一般评估?
企业图书馆 - 杀手.至少使用大多数块作为示例应用程序.
领域驱动设计 - 从ERD/ORM的思考到域驱动设计有哪些技巧?优点与缺点?
敏捷与SCRUM - 真的有区别吗?
单元测试 - 我想到的最后一件事.无法正确获得自动化web ui测试设置,还需要有关VSS 2005存储库中的NAnt/MSBuild脚本的帮助.源代码中的完整示例非常好,可能包括调度.
绝对必要的TSQL - 什么被认为是企业发展的最低专业级TSQL语句?像ROWCOUNT,TRANSACTION,ROLLBACK,流控制语句,CRUD方法的内联sql和安全性问题.
可以想象集成MVC2/3,实体框架,企业库和SilverLight Web前端?甚至可能是Sharepoint?
我问了一个我见过的人,我应该什么时候使用Linq,他的回答是"总是使用武力".
在学习新语言时,您会编写哪些游戏/应用程序?那些即将编码的人有哪些好的练习?(我们向您致敬!)
您会为通用编程理论,企业架构和业务分析推荐哪些书籍?
好吧,可能没有人会回应,但这些都是我内心深处的问题,我不得不把这一切都拿出来.
生活的极客.
c# ×3
wcf ×2
.net ×1
agile ×1
asp.net-mvc ×1
autofac ×1
c#-4.0 ×1
listeners ×1
logging ×1
split ×1
sql-server ×1
unit-of-work ×1