当我在Windows时,我使用优秀的 MicroOLAP Database Designer for PostgreSQL,但它不是开源或多平台.
你知道或者可以推荐我替代这个软件,我可以在Linux中使用吗?
编辑:只是为了澄清,我不想使用wine来为PostgreSQL模拟MicroOlap,它不能很好地工作,我更喜欢本机或基于Java的东西.
我最初按照此代码项目文章中概述的s#体系结构示例设计了我的系统(不幸的是,我没有使用NHibernate).基本思想是,对于需要与持久层进行通信的每个域对象,您将在不同的库中具有相应的数据访问对象.每个数据访问对象都实现一个接口,当域对象需要访问数据访问方法时,它始终对接口进行编码,而不是对DAO本身进行编码.
当时,我仍然认为这种设计非常灵活.但是,随着我的域模型中对象数量的增加,我发现自己在质疑这里是否存在组织问题.例如,域中的几乎每个对象都以相应的数据访问对象和数据访问对象接口结束.不仅如此,但如果我想做一些简单的事情,比如转移一些命名空间,那么这些中的每一个都处于一个更难以维护的地方.
有趣的是,许多这些DAO(及其相应的接口)都是非常简单的生物 - 最常见的只有一个GetById()方法.我最终得到了一大堆对象,比如
public interface ICustomerDao {
Customer GetById(int id);
}
public interface IProductDao {
Product GetById(int id);
}
public interface IAutomaticWeaselDao {
AutomaticWeasel GetById(int id);
}
Run Code Online (Sandbox Code Playgroud)
他们的实现者通常也非常琐碎.这让我想知道走向不同的方向是不是更简单,也许通过为简单的数据访问任务设置单个对象来切换我的策略,并为那些需要更多东西的人保留专用数据访问对象的创建复杂.
public interface SimpleObjectRepository {
Customer GetCustomerById(int id);
Product GetProductById(int id);
AutomaticWeasel GetAutomaticWeaselById(int id);
Transaction GetTransactioinById(int id);
}
public interface TransactionDao {
Transaction[] GetAllCurrentlyOngoingTransactionsInitiatedByASweatyGuyNamedCarl();
}
Run Code Online (Sandbox Code Playgroud)
有没有人有这样的架构的经验?总的来说,我对设置非常满意,因为现在我唯一担心的是管理所有这些小文件.我仍然想知道存在什么其他方法来构建数据访问层.
我目前正在编写一个接口,允许应用程序将异常数据发送到中央存储库以获得支持.我对如何传递额外的上下文数据感到困惑:
public interface IExceptionNotifier
{
void Notify(Exception ex, NameValueCollection context); //this
void Notify(Exception ex, IDictionary<string, string> context); //or this
}
Run Code Online (Sandbox Code Playgroud)
在创建查找时,我经常发现自己处于类似的位置.忽略异常通知程序概念是否良好,是否最好使用IDictionary<string, string>
或NameValueCollection
?你为什么选择一个?
我现在正在构建桌面软件超过10年,主要是简单的数据输入软件.我的问题是,它总是看起来一样:左边的树视图和右边的很多文本/数据字段,具体取决于当前处理的数据类型.现在有这样的软件应该是什么新鲜的想法吗?
需要进一步说明:这是非常分层的数据,主要用于电子设备.有些数据元素为设备提供静态设置,有些部分描述了设备的某种"程序".有很多(超过30个)不同的输入掩码.当然我使用组合框和上/下输入字段.
问题:
Ajax建议 - 在食谱中搜索[ n ]成分.那就是:匹配多种成分的配方.
例如:SELECT Recipes using "flower", "salt"
会产生:"Pizza", "Bread", "Saltwater"
等等.
表:
Ingredients [
IngredientsID INT [PK],
IngredientsName VARCHAR
]
Recipes [
RecipesID INT [PK],
RecipesName VARCHAR
]
IngredientsRecipes [
IngredientsRecipesID INT [PK],
IngredientsID INT,
RecipesID INT
]
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT
Recipes.RecipesID,
Recipes.RecipesName,
Ingredients.IngredientsID,
Ingredients.IngredientsName
FROM
IngredientsRecipes
INNER JOIN Ingredients
ON IngredientsRecipes.IngredientsID = Ingredients.IngredientsID
INNER JOIN Recipes
ON IngredientsRecipes.RecipesID = Recipes.RecipesID
WHERE
Ingredients.IngredientsName IN ('salt', 'water', 'flower')
Run Code Online (Sandbox Code Playgroud)
我目前正在使用ASP.NET C#构建我的查询,因为该WHERE
子句具有动态特性.
我咬了一下,我必须在我的代码层中构建查询,而不是使用存储过程/纯SQL,理论上应该更快.
你有没有想过如何将我的代码层中的所有逻辑移动到纯SQL,或者至少我如何优化我正在做的事情的性能?
我正在考虑临时表:
第一步 …
我认为.net 3.0中有一些方法可以为数组列表提供一个类型,这样它就不会只返回Object,但是我很难这样做.可能吗?如果是这样,怎么样?
我正在寻找一个非常好的对话框缩放器类,它将根据需要在调整屏幕大小时拉伸和缩小单个项目.Stephan Keil有一个很好的(DlgResizeHelper),它基本上按设定的比例调整所有内容,但我正在寻找更聪明的东西.
例如:
图标不应调整大小
单行文本框不应垂直拉伸
按钮应该保持相同的大小
基本上我正在寻找能够查看所有控件的东西,弄清楚静态文本字段与它下面/下面的控件相关并将两者锚在一起,并以"智能"方式调整大型控件的大小以使其看起来像好.
那里有这样的框架吗?我一直在做一个,但现成的东西可能会更好.
关注:我正在寻找建议的解决方案.他们中的许多人要求你在对话框中的每个控件中进入锚点.我正在寻找能够找出锚点应该是什么的聪明的东西,能够在猜测错误的情况下手动锚定.似乎它应该是可能的 - 大多数人会同意编辑字段旁边的静态文本字段应该锚定在一起.猜猜我差不多在这里寻找一个小人工智能:)
c# ×4
.net ×1
architecture ×1
c++ ×1
dialog ×1
generics ×1
linux ×1
mfc ×1
olap ×1
performance ×1
postgresql ×1
resize ×1
ruby ×1
sql-server ×1
windows ×1
wpf ×1