我正在将VB6项目转换为C#.我遇到过一些我并不完全理解的VB6(我根本没有能力进行调试).在做任何事之前,它是一个立即退出的循环:
For Each objSubFolder In objFolder.SubFolders
Exit For
Next
Run Code Online (Sandbox Code Playgroud)
有谁能解释一下?我确信它有所帮助.我猜它是在分配一个变量,或者其他东西.如果是这样,它只做一次吗?
我已经盯着这个很长一段时间了,看不出问题.
我使用EF4和POCO生成器生成了一些POCO类.
我正在尝试使用MetadataType属性来创建我可以在我的View(asp.net MVC)中使用的"伙伴"类,并利用数据注释.
所以,我有一个名为Contact的域实体(POCO).这是在命名空间BreakAwayEntities中名为BreakAwayEntities的项目中.
我在View的项目(WebUI)中创建了一个公共部分类.就是这个:
namespace BreakAwayEntities
{
[MetadataType(typeof(ContactMetadataSource))]
public partial class Contact
{
internal sealed class ContactMetadataSource
{
[HiddenInput(DisplayValue = false)]
public int ContactID { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
public string Title { get; set; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我被处理以下错误消息:
错误10无法将类型'System.Collections.Generic.List [c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll]'隐式转换为'System.Collections.Generic.列表[c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll]'F:\ Code\Sandpit\GetAwayBreaks\WebUI\Controllers\CustomerController.cs 29 38 WebUI
由于某种原因,接线不起作用.部分类的名称空间是相同的,但它们位于不同的项目中.那应该没关系?在View中使用的Contact类不会显示单个属性.它应该暴露POCO的所有属性,由MetadataType增强.
如果我错过了一个集会,我没有得到任何关于它可能是什么的暗示.
我错过了什么?我需要在Global.asax中注册一些东西吗?谢谢
在我的业余时间里,我一直在和这个人争斗好几个星期,决心不转向这个美妙的社区.但是我的精神被打破了.所以......
我创建了一个WCF服务,并尝试在控制台应用程序中托管它,以便使用TCP端点.
我有一个包含合同和svc文件的项目.我有另一个项目,其中包含一个Console应用程序,它引用了第一个提到的项目.我的控制台应用程序的主要方法如下所示:
using (ServiceHost host = new ServiceHost(typeof(LicenceBucketWireService.LicenceBucketService)))
{
host.Open();
foreach (var endpt in host.Description.Endpoints)
{
Console.WriteLine("Enpoint address:\t{0}",endpt.Address);
Console.WriteLine("Enpoint binding:\t{0}",endpt.Binding);
Console.WriteLine("Enpoint contract:\t{0}\n", endpt.Contract.ContractType.Name);
}
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
直到这一点,一切都是花花公子:

当我尝试将该服务的服务引用添加到将要使用该服务的第3个完全独立的应用程序时,它会出错.当我尝试添加引用时,使用net.tcp:// localhost:49189/LicenceBucketWireService/LicenceBucketService/mex作为发现详细信息的地址,我收到错误:
无法识别URI前缀.元数据包含无法解析的引用:'net.tcp:// localhost:49189/LicenceBucketWireService/LicenceBucketService/mex'.元数据包含无法解析的引用:'net.tcp:// localhost:49189/LicenceBucketWireService/LicenceBucketService/mex'.如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用.
执行此任务时,控制台应用程序正在运行.app config包含以下元素:
<system.serviceModel>
<services>
<service name="LicenceBucketWireService.LicenceBucketService">
<clear />
<endpoint address="mex" binding="mexTcpBinding" contract="LicenceBucketWireService.ILicenceBucketService"
listenUriMode="Explicit">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="net.pipe://localhost/licenceBucketService"
binding="netNamedPipeBinding" bindingConfiguration="" contract="LicenceBucketWireService.ILicenceBucketService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:49187/LicenceBucketWireService/LicenceBucketService" />
<add baseAddress="net.tcp://localhost:49189/LicenceBucketWireService/LicenceBucketService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set …Run Code Online (Sandbox Code Playgroud) 我经常在我正在阅读的书中看到如下的符号:
int - > int - > int*int
显然,这是类型的东西.
是否有任何指南可以解释如何阅读?这对我来说只是一个箭头和箭头.
由于外键关系,我在删除某些实体时遇到问题。我了解以下错误消息,并已尽我所能删除实体而不会导致此错误:
DELETE 语句与 REFERENCE 约束“FK_QuizUserAnswer_QuizWithQuestion”冲突。冲突发生在数据库“SomeDatabase”、表“dbo.QuizUserAnswer”、“idQuizQuestion”列中。该语句已终止。
这是有问题的两个表的图像:

我正在尝试删除QuizWithQuestion实体。我已将 idQuizQuestion 列设为可空。因此,外键在 QuizUserAnswer 端可以为空。在映射文件中,我指定了关系是可选的:
HasMany(t => t.QuizUserAnswers)
.WithOptional(t => t.QuizWithQuestion)
.HasForeignKey(t => t.idQuizQuestion);
HasOptional(t => t.QuizWithQuestion)
.WithMany(t => t.QuizUserAnswers)
.HasForeignKey(d => d.idQuizQuestion);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多很多代码片段,所以我将发布代码的当前状态,希望我的意图是明确的:
public void RemoveQuestionsFromQuiz(IEnumerable<int> deletedQuestions, int quizId)
{
var quiz = // code which retrieves quiz
foreach (var deletedQuestion in deletedQuestions)
{
var quizWithQuestion = quiz.QuizWithQuestions.FirstOrDefault(q => q.Id == deletedQuestion);
if (!ReferenceEquals(null, quizWithQuestion))
{
db.Entry(quizWithQuestion).State = EntityState.Deleted;
}
}
db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
另一种尝试如下所示:
public void RemoveQuestionsFromQuiz(IEnumerable<int> …Run Code Online (Sandbox Code Playgroud) 这是一个棘手的问题,需要深入了解ASP.NET Core框架.我将首先解释我们的应用程序在MVC 3实现中发生了什么.
对于特定视图上的ViewModel,需要解决涉及ModelMetaData的复杂需求.这是一个高度可配置的应用程序.因此,对于一个"期刊类型",属性可能是强制性的,而对于另一个,完全相同的属性可能是非强制性的.此外,它可以是一个"日志类型"的单选按钮和另一个的选择列表.由于存在大量组合,混合和匹配所有这些配置选项,因此为每个可能的排列创建单独的ViewModel类型是不切实际的.因此,有一个ViewModel类型,并且动态地在该类型的属性上设置了ModelMetaData.
这是通过创建自定义ModelMetadataProvider(通过继承DataAnnotationsModelMetadataProvider)完成的.
Smash-cut到现在,我们正在升级应用程序并在ASP.NET Core中编写服务器内容.我已经确定实现IDisplayMetadataProvider是在ASP.NET Core中修改模型元数据的等效方法.
问题是,框架内置了缓存,任何实现的类IDisplayMetadataProvider只运行一次.我在调试ASP.NET Core框架时发现了这个,这个评论证实了我的发现.我们的要求将不再符合此类缓存,因为第一次访问ViewModel类型时,MetadataDetailsProvider将运行并将缓存结果.但是,如上所述,由于高度动态的配置,我需要它在每个之前运行ModelBinding.否则,我们将无法利用ModelState.第一次触发该端点时,元数据将在未来的所有请求中一致.
我们有点需要利用反射来通过所有属性的递归过程来设置元数据,因为我们不希望自己必须这样做(超出我的薪酬规模的巨大努力).
所以,如果有人认为我错过了新Core框架中的某些内容,请务必告诉我.即使是为消除那缓存功能简单ModelBinders和IDisplayMetadataProviders(这就是我将通过ASP.NET源会寻找到在未来几天内).
任何人都可以建议为什么intellisense不起作用.
我使用的是2008 R2.
我见过这里的人建议先写一下FROM子句 - 当然.
我已经完成了Query - Intellisense Enabled.
我已经完成了刷新本地缓存.
我甚至将它安装在一个全新的硬盘上,带有全新的操作系统.
我没办法.很久以前它很好用.
我在验证方面遇到了一些问题.我创建了一个名为RequiredFieldRule的自定义验证器,它在xaml中应用如下:
<TextBox local:Masking.Mask="^[a-zA-Z0-9]*$" x:Name="CameraIdCodeTextBox" Grid.Row="1" Grid.Column="1">
<Binding Path="CameraIdCode" Mode="TwoWay">
<Binding.ValidationRules>
<localValidation:RequiredFieldRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
当用户离开该TextBox而不输入值时,该验证器返回以下内容:
return new ValidationResult(false, ValidationFailedMessage);
Run Code Online (Sandbox Code Playgroud)
我想显示一些自定义的视觉反馈,并尝试使用Validation.Error事件捕获错误,因为它冒泡:
private void Grid_Error(object sender, ValidationErrorEventArgs e)
{
// do stuff here
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,永远不会调用该处理程序.我的问题是,当它内部的TextBox正确返回失败的ValidationResult时,为什么不调用该处理程序?
为了尝试使用 Log4net 获得良好的日志记录抽象,我从这篇 SO 帖子中获取了抽象,并从这篇 SO 帖子中获取了适配器,并尝试让它们一起工作。
真正剩下要做的就是配置容器,而这是我尚未成功完成的部分。
我尝试过的配置是
public static class InfrastructureRegistry
{
public static void RegisterLoggingServices(this Container container)
{
container.RegisterConditional(typeof(ILog), c => LogManager.GetLogger(
c.Consumer.ImplementationType).GetType(),
Lifestyle.Scoped, c => true);
container.RegisterPerWebRequest<ILogger, Log4netAdapter>();
}
}
Run Code Online (Sandbox Code Playgroud)
正如您从代码中看到的,我想要一个特定的 log4net 记录器,它从注入的类中获取其类型。虽然大多数日志记录都是以包罗万象的方式完成的,但我希望在较低层中进行一些日志记录,例如当表单验证失败时。
我ActivationException通过该配置得到的是:
LogImpl 类型的构造函数包含名称为“logger”且类型为 ILogger 的未注册参数。请确保ILogger已注册,或更改LogImpl的构造函数。
不太确定从这里去哪里,所以任何帮助将不胜感激。
编辑
抱歉,我应该指出,我正在尝试编写它,这样我只需编写此配置一次。以下工厂函数有效,但我不想每次要注入记录器时都手动添加更多配置:
container.RegisterPerWebRequest<ILog>(() => LogManager.GetLogger(typeof(LoginController)));
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我想创建一个新项目(在一个新的解决方案中),它将具有与现有项目完全相同的Nuget包.
我想找到一种方法,如果可能的话,利用我现有项目中的Packages.config文件将这些包下载到新的解决方案中.这个想法是为了让我不必为每个我想要安装的软件包运行Install Package等.
注意,我不是在谈论克隆存储库.在这种情况下,Nuget包恢复可以很好地工作.但是,如果我将Packages.config内容复制到新解决方案的Packages.config中,Nuget包还原不会关闭该配置文件中列出的包.
那么,是否有任何命令或一些我可以运行的命令,它将查看配置文件并继续加载这些包?
poco ×2
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c# ×1
f# ×1
log4net ×1
metadatatype ×1
nuget ×1
validation ×1
vb6 ×1
wcf ×1
wpf ×1