假设我有两个表,一个包含个人信息的学生主列表,以及一个班级中的学生注册列表.这两个表共享一个公共列,这是一个唯一标识学生的字符串,但它不是主键.
假设我想显示页面上的所有注册,以及来自学生的一些个人数据(比如说可能是家乡).
我明白这将是一个非常多的关系.主列表记录有许多注册.注册属于学生.
class Student < ActiveRecord::Base
has_many :enrollments
end
class Enrollment < ActiveRecord::Base
belongs_to :student
end
Run Code Online (Sandbox Code Playgroud)
这是两者之间的正确关系,如果是这样,我如何对共享列进行连接查询?
我有资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等),我想在多个单独的应用程序中使用.我可以将它们添加到应用程序的程序集中,但如果我在一个程序集中编译这些资源并让我的应用程序引用它,那就更好了吧?
构建资源程序集后,如何在我的应用程序的App.xaml中引用它?目前,我使用ResourceDictionary.MergedDictionaries来合并各个字典文件.如果我在一个程序集中有它们,我怎么能在xaml中引用它们?
Visual Studio 2008解决方案中的最佳项目数是多少?
我们有一个Visual Studio 2008解决方案,目前约有50个项目.它可能会继续增长,因为解决方案中的大部分项目都包含主应用程序的插件程序集.
如果在一个解决方案中看起来"太多项目",那么您将如何确定哪些项目应该在解决方案中组合在一起?鉴于我们在一个解决方案中大约有50个项目的示例,其中大部分项目是插件,插件数量可能增长,应该如何构建解决方案?是应该将所有插件放在自己的解决方案中?当插件解决方案中的插件数量达到"太多"的幻数时,组织应该如何改变?
我们对解决方案中的这么多项目没有任何问题......它加载速度快,构建速度快,使用合理的内存量,并且不会导致VS2008崩溃或碰到任何VS2008错误.
我查找了微软的文档(似乎没有任何内容),谷歌搜索"每个项目都有自己的解决方案"的建议,"将所有项目放在一个解决方案中".两种极端似乎都是荒谬的.我正在中间寻找一些合理的指导.
Stackoverflow上还有其他与您看到的最大值相关的问题.这与最佳状态并不完全相同.
我听说用FTP上传你的网站现在是n00bs,但这是我知道8年左右我建网站的唯一方法.显然现在所有的嗡嗡声都是使用版本控制系统,如SVN或Git,并以某种方式使用SSH只上传已更改的文件(如果我理解正确).我想知道是否有人可以解释或指向我"全面"指南.我需要安装什么,我的共享主机(Dreamhost)是否兼容?我目前正在WAMP环境中开发.我从未使用过版本控制,也不知道从哪里开始.我通常使用CakePHP或Zend等框架进行开发.
为什么以下查询会返回"将数据类型varchar转换为bigint时出错"?IsNumeric不能使CAST安全吗?我已经尝试了强制转换中的每个数值数据类型并获得相同的"错误转换..."错误.我不相信结果数字的大小是一个问题,因为溢出是一个不同的错误.
有趣的是,在管理工作室中,结果实际上会在错误返回之前显示在结果窗格中一瞬间.
SELECT CAST(myVarcharColumn AS bigint)
FROM myTable
WHERE IsNumeric(myVarcharColumn) = 1 AND myVarcharColumn IS NOT NULL
GROUP BY myVarcharColumn
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我的Outlook插件遇到了非常奇怪的程序集引用问题和加载问题.这是细节(长篇大论:)):
我有一个旧的Outlook插件,使用.Net 1.1编写和构建.在其自己的应用程序域中使用非托管填充程序加载插件.即使用户的计算机上没有1.1,也可以使用.Net 2.0.
该插件使用由VS 2003针对Outlook 2000创建的自定义Outlook互操作程序集,并在该重建之后进行强名称(就像我的插件一样).
在addin项目中,我只引用了这个自定义互操作程序集,没有引用官方MS互操作程序集.
当这个插件在Outlook 2007和.Net 2.0环境中使用时,官方MS互操作程序集安装在GAC中,由于某种原因,我看到插件加载并使用它们.
在Connect类的代码中,我有一个using指令:
using Outlook;
Run Code Online (Sandbox Code Playgroud)
这是我的自定义互操作程序集的命名空间.
在Connect ctor中,我有这些代码行(为了测试目的而添加):
Assembly.LoadFrom(PATHTOMYASSEMBLY + "Interop.Outlook.dll");
Type type = typeof(Outlook.ApplicationClass);
logger.Debug("Outlook.Application full type is: {0}", type.AssemblyQualifiedName);
Run Code Online (Sandbox Code Playgroud)
这输出:
Outlook.Application完整类型是:Outlook.ApplicationClass,Interop.Outlook,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = 4cfbdc5349cf59d8
这正是我所期望的.
问题是,当调用OnConnection(对象应用程序,Extensibility.ext_ConnectMode connectMode,对象addInInst,ref System.Array自定义)时,我在日志中看到(我有一个当前域的AssemblyLoad事件的钩子)MS interop程序集也被加载:
private void app_domain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
Assembly loadedAssembly = args.LoadedAssembly;
logger.Debug("Assembly {0} is loaded from: {1}", loadedAssembly.FullName, loadedAssembly.GlobalAssemblyCache ? "GAC" : loadedAssembly.Location);
}
Run Code Online (Sandbox Code Playgroud)
输出:
程序集Microsoft.Office.Interop.Outlook,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c从以下位置加载:GAC
我的OnConnection方法如下所示:
public void OnConnection(object application, …Run Code Online (Sandbox Code Playgroud) 没有多少人知道这个功能,但Python的功能(和方法)可以有属性.看吧:
>>> def foo(x):
... pass
...
>>> foo.score = 10
>>> dir(foo)
['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name', 'score']
>>> foo.score
10
>>> foo.score += 1
>>> foo.score
11
Run Code Online (Sandbox Code Playgroud)
Python中此功能的可能用途和滥用情况是什么?我知道的一个好用途是PLY使用docstring将语法规则与方法相关联.但是自定义属性呢?有充分的理由使用它们吗?
我在OS X上运行Emacs 22.1.1和IPython 0.9.1,我希望能够在IPython解释器中根据需要从当前缓冲区运行Python代码的行/方法/片段.
为了让这个工作,我需要做什么?
这是场景:
我的用户被呈现为网格,基本上是电子表格的精简版本.网格中的每一行都有文本框.当他们更改文本框中的值时,我正在对其输入执行验证,更新驱动网格的集合,并重新绘制页面上的小计.这全部由每个文本框的OnChange事件处理.
当他们点击"保存"按钮时,我正在使用按钮的OnClick事件对金额执行一些最终验证,然后将他们的整个输入发送到Web服务,保存它.
至少,如果他们将表单选中到"提交"按钮,则会发生这种情况.
问题是,如果他们输入一个值,那么立即单击保存按钮,SaveForm()在UserInputChanged()完成之前开始执行 - 一个竞争条件.我的代码不使用setTimeout,但我用它来模拟缓慢的UserInputChanged验证代码:
<!-- snip -->
<script>
var amount = null;
var currentControl = null;
function UserInputChanged(control) {
currentControl = control;
// use setTimeout to simulate slow validation code (production code does not use setTimeout)
setTimeout("ValidateAmount()", 100);
}
function SaveForm() {
// call web service to save value
document.getElementById("SavedAmount").innerHTML = amount;
}
function ValidateAmount() {
// various validationey functions here
amount = currentControl.value; // save value to collection
document.getElementById("Subtotal").innerHTML = amount; // update subtotals
}
</script> …Run Code Online (Sandbox Code Playgroud)