以下是我目前正在处理的项目链接:
我正在关注此博客的域名驱动设计: WCF by Example
我想只创建一个名为zone的简单表,并从中检索数据。我创建了服务,存储库......文章建议的所有内容。
我想使用WCF服务遵循通用设计进行CRUD操作,所以我关注了博客。然而,恩里克爵士似乎非常忙碌。所以我得不到我想要的答案。
代码库是他项目博客的精确复制品。当我用他的实体从他的博客上运行下载时,它运行得很好。我可以看到弹出的表格。但是在根据我的需要用我的enities,dtos,serviceContract和服务改变项目之后代码不起作用。我检查了每件作品。一切似乎都很好。但每次我运行该项目时,它都会抛出异常:
lookingAt
在粗线下面:
Matcher m = p.matcher(tring);
if (!m.find()) return; // <---- Add something like this
String[] try1 = new String[m.groupCount()];
这里说Container.RequestContext为null。
恩里克爵士(博主)建议我没有正确地进行全局上下文初始化。这是我的DbContext类:
An exception of type 'System.NullReferenceException' occurred in Kiosk.Domain.dll but was not handled in user code
我浪费了一个多星期的时间。我真的不想离开域驱动模式。但我认为我没有任何其他选择放弃它。
任何人都可以解释如何为我的上述代码初始化全局上下文。
感谢数十亿人!
上面的代码对于WCF的通用模式来说真的很棒。如果这个问题得到解决,它将简化许多开发人员的工作。
编辑: 这是RequestContext类:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
[InstanceCreation]
public class ZoneService: ServiceBase, IZoneService
{
private readonly IBusinessNotifier BusinessNotifier;
public ZoneService()
{
**BusinessNotifier = Container.RequestContext.Notifier;**
}
这是IRequestContext:
public class KioskDbContext : DbContext
{
public IModelCreator ModelCreator { get; private set; }
public KioskDbContext(IModelCreator modelCreator): base("kioskv1") // hardcoded db name
{
ModelCreator = modelCreator;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
ModelCreator.OnModelCreating(modelBuilder);
}
}
我猜Blogger通过XML文件初始化了RequestContext。这是来自xml文件的服务器容器和请求上下文初始化代码。 ,
public class RequestContext
: IRequestContext
{
public IBusinessNotifier Notifier
{
get
{
InstanceContext ic = OperationContext.Current.InstanceContext;
InstanceCreationExtension extension = ic.Extensions.Find<InstanceCreationExtension>();
return extension.Notifier;
}
}
}