问题列表 - 第6554页

组件创建问题:字段最终为零

这是我在这里工作的项目的延续: 与相互使用的类的循环引用问题

在那里收到的建议修复了ciruclar参考问题(再次感谢您的帮助).现在我正在与其他东西搏斗:TcmDataPanel.FObservingDataPanels总是最终= nil,显然是因为它永远不会被创建.(最初我遇到了访问冲突,但在进一步测试时发现FObserver始终为零).

这是相关的代码(它是一个TFrame单元,TcmTPDataPanel是TFrame descednent):

unit cmTPDataPanelFrame;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cmTPBasePanelFrame, cmTPPanels, nxdb, nxllComponent;

type
  TcmTPDataConnector = class;

  TcmTPDataPanel = class(TcmTPBasePanel)
    Database: TnxDatabase;
    Session: TnxSession;
  private
    FDataConnector: TcmTPDataConnector;
    MyNxDataBase: TnxDatabase;
    MyNxSession: TnxSession;
    MyRefNxDataBase: TnxDatabase;
  protected
    procedure Disconnect; virtual; abstract;
    procedure Refresh; virtual;
    procedure Requery; virtual; abstract;
  public
    procedure Connect;
  published
    property DataConnector: TcmTPDataConnector read FDataConnector write
        FDataConnector;
  end;

  TcmTPCustomDataConnector = class(TComponent)
  private
    FDatabase: TnxDatabase;
    FObservingDataPanels: TList;
    FTableForCategories: TnxTable;
    FTableForItemCategoryLinks: TnxTable;
    FTableForItems: …
Run Code Online (Sandbox Code Playgroud)

delphi oop inheritance custom-component

1
推荐指数
1
解决办法
234
查看次数

使用DataContext.ExecuteQuery <T>时忽略只读类属性

在将结果集绑定到对象时,如何告诉LINQ数据上下文忽略特定属性或所有只读属性?

我正在处理一些难以用LINQ表达的T-SQL语句,所以我使用数据上下文的ExecuteQuery方法将直接的T-SQL传递给数据库.

如果我的类T具有任何只读属性,那么当数据上下文尝试设置这些属性时,我会在运行时获得异常,因为没有setter属性.如何告诉上下文忽略这些属性?

这就是我现在正在做的事情.它有效,但很糟糕:

public bool IsPaidInFull {
    get { return NetTotal <= 0m; }
    set { /* needed so linq doesn't choke. Should never be set by hand */ }
}
Run Code Online (Sandbox Code Playgroud)

.net linq datacontext linq-to-sql

9
推荐指数
1
解决办法
1689
查看次数

Fluent NHibernate - 如何将外键列映射为属性

我确信这是一个直截了当的问题,但请考虑以下内容:我在公司和部门之间有如下参考:

public class Company {
    public Guid ID { get; set; }
    public Sector Sector { get; set; }
    public Guid SectorID { get; set; }
}

public class Sector {
    public Guid ID { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

好.我想要的是在我去之后要填充的Company对象的SectorID:

(new Company()).Sector = new Sector() { Name="asdf" }
Run Code Online (Sandbox Code Playgroud)

并做一个同花顺.

我正在使用的映射在Company表中名为Sector_Id的数据库中创建了一个额外的列,但这不是公司的属性.我想要填充SectorID属性.

我目前在CompanyMap中使用的映射是

References(c => c.Sector).Cascade.All();
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?


感谢您的答复.遗憾的是,如果我执行第二个选项(将列的列名设置为与属性相同,或设置Map(x => x.SectorID, "Sector_Id")然后我得到错误:

System.IndexOutOfRangeException:此SqlParameterCollection的索引7无效,Count = 7.

我可能必须做第一个选项,但我担心当你调用SectorID get时会触发一个额外的查询,因为它将扇区本身从数据库中取出(除非它是急切加载的,这有点麻烦).

我很惊讶没有一个简单的答案.


哇!如果我使用

public virtual Guid SectorID
{ …
Run Code Online (Sandbox Code Playgroud)

nhibernate fluent-nhibernate

9
推荐指数
2
解决办法
2万
查看次数

我可以将DataContractSerializer配置为不在输出XML中创建可选(即Nullable <>和List <>)元素吗?

我正在使用新的.NET 3.0 DataContractSerializer.我有Nullable < >和List < >对象我要序列化.例:

[DataContract(Namespace = "")]
class Test
{
    public static void Go()
    {
        Test test = new Test();

        var dcs = new DataContractSerializer(typeof(Test));
        dcs.WriteObject(new StreamWriter("test.xml").BaseStream, test);
    }

    [DataMember]
    public Nullable<int> NullableNumber = null;

    [DataMember]
    public int Number = 5;

    [DataMember]
    public List<int> Numbers = new List<int>();
}
Run Code Online (Sandbox Code Playgroud)

当.NET序列化空列表或空列表时,它将nil(对于Nullable)和空(对于列表)元素放入XML中.上面的例子生成:

<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <NullableNumber i:nil="true"/>
  <Number>5</Number>
  <Numbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
</Test>
Run Code Online (Sandbox Code Playgroud)

由于我没有时间描述的原因,我想消除多余的NullableNumber和Numbers元素,如下所示:

<Test xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Number>5</Number>
</Test>
Run Code Online (Sandbox Code Playgroud)

实际上,上面的文件反序列化了串行器就好了.

谢谢你的帮助!

.net c# datacontractserializer

13
推荐指数
1
解决办法
8361
查看次数

MSBuild和TeamBuild - 由于MSB3021文件权限违规导致BuildInParallel失败

我维护了一个相当大的软件的构建,包括大约350个csharp项目.调试内置时钟的构建时间约为17分钟.

我一直在寻找改善构建时间的方法,而BuildInParallel属性确实看起来很吸引人.特别是因为我们有一个四核服务器在做我们的构建,它应该真的能够利用计算能力.

但是唉...在设置属性,修改构建代理的配置文件并重新启动它之后,第一次运行确实看起来很有希望,比正常情况更快,直到它失败的程度.

在查看构建日志之后,当它尝试将标记为CopyLocal = true的引用复制到输出目录时,看起来构建失败.如果C#项目A和C#项目B并行构建,并且两者都引用相同的第三方dll,并尝试同时复制它,则尝试复制文件的第二个进程将获得文件访问冲突 - 该文件正被另一个进程使用.

有没有人经历过这个,并且能够在Team Build上获得多进程构建?


这是其中一个失败,有点难以弄清楚同时建造了哪个其他项目.

我删除了所有不相关的东西:

54>从项目"d:\ temp\PCM\1.3-Maint_CI\Sources\Modules\Core \"文件"c:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets"中定位"_CopyFilesMarkedCopyLocal" Test\UnitTest\TestDIPS.Core.Data.Server.NUnit\TestDIPS.Core.Data.Server.NUnit.csproj":54>任务"复制"从"..........\Bin \"复制文件3rdParty\Oracle\Oracle.DataAccess.dll"到"d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll".命令:copy/y"..........\Bin\3rdParty\Oracle\Oracle.DataAccess.dll""d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll "54> c:\ WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2703,9):错误MSB3021:无法复制文件"..........\Bin\3rdParty\Oracle\Oracle.DataAccess.dll"到"d:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll".该进程无法访问文件'd:\ temp\PCM\1.3-Maint_CI\Binaries\Debug\Oracle.DataAccess.dll',因为它正由另一个进程使用.完成执行任务"复制" - 失败.54>在项目"TestDIPS.Core.Data.Server.NUnit.csproj"中完成构建目标"_CopyFilesMarkedCopyLocal" - 失败.

msbuild team-build

27
推荐指数
3
解决办法
9624
查看次数

将日期/时间添加到MySQL表?

如何将当前日期和时间(服务器上设置的日期和时间)添加到MySQL表中?

mysql datetime

2
推荐指数
1
解决办法
7665
查看次数

如何使用C#从pdf文件中提取图像

如何将.pdf文件中的图像转换为System.Drawing.Bitmap?

c# pdf image bitmap

10
推荐指数
1
解决办法
3448
查看次数

C#泛型中是否有合理的"默认"类型参数方法?

在C++模板中,可以指定某个类型参数是默认值.即除非明确指定,否则它将使用类型T.

可以用C#完成或近似吗?

我正在寻找类似的东西:

public class MyTemplate<T1, T2=string> {}
Run Code Online (Sandbox Code Playgroud)

这样一个没有明确指定的类型的实例T2:

MyTemplate<int> t = new MyTemplate<int>();
Run Code Online (Sandbox Code Playgroud)

基本上是:

MyTemplate<int, string> t = new MyTemplate<int, string>();
Run Code Online (Sandbox Code Playgroud)

最后,我正在研究一个案例,其中有一个相当广泛使用的模板,但我正在考虑使用其他类型参数进行扩展.我想,我可以继承,但我很好奇是否还有其他选择.

c# generics parameters types default

80
推荐指数
4
解决办法
3万
查看次数

使用WPF MV-VM模式显示弹出窗口的正确方法

在弹出窗口方面,我对VM的职责有疑问.当应用程序弹出消息框或某种对话框(使用MVVM)时,我们拥有的两个选项是:

  1. 将UI(ShowDialog())代码放入虚拟机中看起来很糟糕
  2. 让VM发送一些UI可以订阅的事件并在后面的代码中显示一个对话框(但我们正在努力争取零代码:))

你们是怎么解决这个案子的?

wpf design-patterns popup mvvm

9
推荐指数
1
解决办法
6363
查看次数

Hashtable vs Dictionary

我的理解是,词典没有拳击问题,而且性能更快.是否存在使用Hashtable与Dictionary相比更可取的情况?谢谢

.net c#

13
推荐指数
3
解决办法
6174
查看次数