我有一个类库,将从多个单独的可执行应用程序中调用.此类库需要知道要访问的数据库服务器的地址(以及许多其他配置选项,身份验证信息等).我有一个独立于类库的配置和管理应用程序,它还需要知道并设置这些配置选项.
通常的做法是在Windows注册表中存储这些特定于用户的配置选项,还是首选对类库使用典型的"App.config"XML方法,并允许配置工具更改和修改它?
我倾向于注册表方法,但我知道许多人对不使用它有意见.你会怎么做?
如何强制NHibernate在多对多集合中执行右外连接或INNER连接而不是LEFT外连接?
我想要这样做的原因是因为应用于集合元素的过滤.使用左连接时,您将获得与未过滤查询相同的行数,但过滤掉的元素只显示所有字段的NULL.但是,使用右连接时,将从查询中返回正确的行数和元素数.
我希望可以在集合的映射中的某处指定连接.
所以我有一个提供.NET API的应用程序.他们的API库通过.NET远程调用与他们的主应用程序通信.要使用API,应用程序必须已启动并运行.
所以,我有一个实例,我需要以编程方式启动应用程序,然后实例化一个API对象,它试图打开一个IPC远程通道到主应用程序.问题是,在我开始这个过程之后,启动和应用程序注册通道之间会有几秒钟的时间.如果我在注册频道之前尝试实例化一个API对象,它就会发出异常.
我对.NET远程处理知之甚少并没有帮助.
如果他们的应用程序已经注册了通信通道,我如何从我的应用程序确定使用他们的API,所以我知道可以实例化他们的API对象?
我发现自己编写了大量可重用的代码,因为我找不到其他人编写的可重用代码.微小的东西,比如小的winforms组件,等等.
我正在寻找一个网站,我可以向公众发布此类内容并获得许可.我不需要像Google Code/Sourceforge/Codeplex这样的东西,因为它对于我知道可以帮助别人的小班来说太大了.类似于PHP Classes Repository,但是对于.NET.
我不需要版本控制,论坛,维基,问题跟踪器......我只是想要一个快速轻松地共享代码的地方.
这样的网站是否存在?
正如我在回答评论时意识到的那样,我正在寻找(在我脑海中)的理想视觉就像是代码的"flickr".我可以在其中放置一个源包,写一个简短的描述,标记它,并完成它.如果不存在这样的事情,也许我刚刚找到了我的下一个项目.
Joe用CodeKeep 回答,这几乎是我正在寻找的东西,但它不处理许可等问题,而且它几乎有点太基础了.但到目前为止,这是最接近的.
编辑:我应该提到,所有这些事情通常都是无关的,我不想把它们全部打包在一起.
目前我正在使用Fluent NHibernate生成我的数据库模式,但我希望HasMany关系中的实体指向不同的列以供参考.IE,这就是NHibernate在创建DDL时会生成的:
alter table `Pony` add index (Stable_ID),
add constraint Ponies_Stable foreign key (Stable_Id)
references `Stable` (Id);
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
alter table `Pony` add index (Stable_ID),
add constraint Ponies_Stable foreign key (Stable_Id)
references `Stable` (EntityId);
Run Code Online (Sandbox Code Playgroud)
其中Stable.ID是主键,Stable.EntityId只是我设置的另一列.
我已经有一个类看起来像这样:
public class ForeignKeyReferenceConvention : IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance instance)
{
instance.Cascade.All();
//What goes here so that I can change the reference column?
}
}
Run Code Online (Sandbox Code Playgroud)
作为一个例子,这里是IReferenceConvention的代码看起来像做同样的事情:
public class MyReferenceConvention : IReferenceConvention
{
public void Apply(IManyToOneInstance instance)
{
instance.PropertyRef("EntityId");
instance.Cascade.All();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
instance.Key.Column("EntityId")
不是解决方案.