草庐IT

有可能

全部标签

c# - 多个添加的实体在 Entity Framework 中可能具有相同的主键

我在一个使用EF4.0的项目中工作。Employee表有一列ReferEmployeeID,其中包含在系统中推荐新员工的员工的员工ID。所以Employee是一个自引用表。现在如果一个没有被添加到系统中的员工要添加,并且他还引用了系统中的另一个员工,则应该一起添加该行。ActualEmployee保存未调用然后ReferEmployee.Employee=ActualEmployee我知道问题是实际员工和推荐员工的员工ID都设置为0,但是如何解决这个问题。 最佳答案 假设数据库表中的EmployeeID定义为INTIDENTITY,

c# - 托管代码中是否可能发生内存泄漏? (特别是 C# 3.0)

例如,如果我有一个分层数据结构:classNode{publicListchildren;}它被填充到许多层次,然后在其中一个parent去:myNode.children.Clear();这将清除所有对直系子代的引用——但是那些直系子代引用的所有孙代、曾孙代等又如何呢?C#是否足够聪明,知道它们不再需要并且将被垃圾收集?我读过使用WPF数据绑定(bind)而不实现接口(interface)INotifyChanged会导致内存泄漏:http://blogs.msdn.com/b/micmcd/archive/2008/03/07/avoiding-a-wpf-memory-leak-

c# - 一个类怎么可能没有构造函数呢?

前段时间我询问了有关实例化HttpContext对象的问题。现在我已经了解了我不知道的东西,让我感到困惑的是你不能说HttpContextctx=newHttpContext();因为该对象没有构造函数。但是不是每个类都需要一个构造函数吗?在C#中,如果您不提供,编译器会自动为您提供默认的cstr。另外,如果我有一个字符串(例如:“HelloThere!”)并且我说Convert.ToBoolean("Hello")或任何字符串,这是如何工作的?幕后发生了什么?我想在这种情况下,像CLRViaC#这样的书会很方便。我错过了什么? 最佳答案

c# - 使用 "base"是不好的做法,即使它可能有利于可读性?

我知道这是一个主观问题,但我一直对编码风格的最佳实践感到好奇。ReSharper4.5在实现类中的基方法调用之前就关键字“base”发出警告,即base.DoCommonBaseBehaviorThing();虽然我很欣赏“少即是好”的心态,但我也花了很多时间调试/维护高度链接的应用程序,并且觉得仅通过查看就知道成员调用是对基础对象的可能会有所帮助在它。当然,更改ReSharper的规则很简单,但你们怎么看?调用基成员时应该使用“base”吗? 最佳答案 唯一应该使用base.MethodCall();的情况是子类中有一个重写的同名

c# - IIS 抛出 ThreadAbortException 并回收 worker,IIS 日志记录为 "IIS configuration change"的可能原因是什么?

当后台线程正在运行时,我开始在Appharbor上托管的.NetMVC网络应用程序中看到错误-经过仔分割析-我无法找出原因。首先,我注意到的异常是ThreadAbortException。然而,这实际上只是表示线程正在被杀死。在线程被杀死之前,您可以看到IIS创建了一个新的worker,并在同一台机器上调用了Application_Start。新应用程序启动并运行后,IIS会终止旧应用程序并按预期处理新请求。同时,IIS记录一条消息:ShutDownMessage:IISconfigurationchangeHostingEnvironmentinitiatedshutdownHost

c# - Lazy<T> ExecutionAndPublication - 可能导致死锁的示例

LazyThreadSafetyMode的文档声明如果初始化方法(或默认构造函数,如果没有初始化方法)在内部使用锁,则使用值ExecutionAndPublication可能会导致死锁。我试图更好地理解使用此值时可能导致死锁的示例。在我使用这个值时,我正在初始化一个ChannelFactory.我看不到ChannelFactory的构造函数使用任何内部锁(使用Reflector查看类),所以我相信这种情况不符合可能的死锁情况,但我很好奇什么情况会导致死锁以及是否可能死锁初始化ChannelFactory。总而言之,我的问题是:使用ExecutionAndPublication初始化Ch

c# - 对 IEnumerable<T> 以外的类型(monads?)进行操作的 LINQ 查询表达式——可能的用途?

我正在看书Real-worldfunctionalprogrammingbyTomasPetricekandJonSkeet我很难消化关于计算表达式的部分1)(又名monad)。通过这本书,我了解到—与我以前的经验相反—LINQ查询表达式不限于IEnumerable,但也可以处理其他自定义类型。这对我来说似乎很有趣,我想知道是否存在查询表达式语法(fromxin...select...)非常适合的场景。一些背景信息:显然,此类自定义类型称为计算类型,它们被描述为与monadsinHaskell本质上相同的事物。.我一直无法理解monad到底是什么,但根据这本书,它们是通过称为bind和

c# - 如何保护可能在多线程或异步环境中使用的资源?

我正在开发供各种消费者使用的C#API。此API提供对共享资源的访问(在我的例子中是进行串行通信的硬件),通常会有几个不同的参与者试图同时使用它。我遇到的问题是我的一些消费者会想在多线程环境中使用它——每个参与者独立工作并尝试使用该资源。一个简单的锁在这里工作得很好。但是我的一些消费者更喜欢使用异步等待和时间片资源。(据我了解)这需要一个异步锁来将时间片返回给其他任务;锁定锁会停止整个线程。而且我认为拥有串行锁充其量是性能不佳的,最坏的情况是潜在的竞争条件或死锁。那么我如何才能在公共(public)代码库中为这两种潜在的并发使用保护这个共享资源呢? 最佳答案

c# - 如何在 C# 中的另一个函数中创建函数,这可能吗?

是否可以在C#中的另一个函数中创建一个函数?如果可以,如何实现? 最佳答案 这当然是可能的。您可以在其他方法中创建委托(delegate),它们是函数。这适用于C#2.0:publicvoidOuterMethod(){someControl.SomeEvent+=delegate(intp1,stringp2){//thiscodeisinsideananonymousdelegate}}这适用于带有lambda的较新版本:publicvoidOuterMethod(){FuncmyFunc=(intp1,stringp2)=>p

c# - 从两个列表中计算所有可能的项目对?

我有两个数组:string[]Group={"A",null,"B",null,"C",null};string[]combination={"C#","Java",null,"C++",null};我希望返回所有可能的组合,例如:{{"A","C#"},{"A","Java"},{"A","C++"},{"B","C#"},............}应忽略null。 最佳答案 Group.Where(x=>x!=null).SelectMany(g=>combination.Where(c=>c!=null).Select(c=>