在EF eager中,加载相关实体很容易.
但是在使用table-per-type模型加载数据时,我遇到了包括继承实体在内的困难.
这是我的模特:
实体:
ArticleBase (基础文章实体)
ArticleSpecial(继承自ArticleBase)UserBase (基本用户实体)
UserSpecial(继承自UserBase)Image关系如图所示(省略许多列): alt text http://i48.tinypic.com/5x4kdc.jpg
实际上,我的用户总是类型UserSpecial,因为UserBase在另一个应用程序中使用,因此我们可以共享凭据.这是我有两个单独的表的唯一原因.UserBase表格不能以任何形式或形式进行更改,因为其他应用程序会破坏.
我怎么想加载ArticleSpecial既CreatedBy和EditedBy设置,使两者都是类型UserSpecial(定义Image关系)?
我尝试过这些选项(虽然不成功):
1. 使用lambda表达式:
context.ArticleBases
.OfType<ArticleSpecial>()
.Include("UserCreated.Image")
.Include("UserEdited.Image");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,问题是,无论是CreatedBy和EditedBy相关的UserBase,没有定义Image导航.所以我应该以某种方式将这两个UserSpecial类型转换为:
context.ArticleBases
.OfType<ArticleSpecial>()
.Include("UserCreated<UserSpecial>.Image")
.Include("UserEdited<UserSpecial>.Image");
Run Code Online (Sandbox Code Playgroud)
但当然使用泛型Include("UserCreated<UserSpecial>.Image")不起作用.
2. 我尝试过使用LINQ查询
var results = from articleSpecial in …Run Code Online (Sandbox Code Playgroud) 我将如何检查是否包含或要求中包含错误.例如,并尝试包含include,如果该页面有错误,则不包含页面并抛出消息?
干杯.
我想知道是否可以注册一个广播接收器来接收两个意图?
我的代码如下:
sipRegistrationListener = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (SIPEngine.SIP_REGISTERED_INTENT.equals(action)){
Log.d("SETTINGS ", "Got REGISTERED action");
}
if (SIPEngine.SIP_UNREGISTERED_INTENT.equals(action)){
Log.d("SETTINGS ", "Got UNREGISTERED action");
}
}
};
context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_REGISTERED_INTENT));
context.registerReceiver(sipRegistrationListener, new IntentFilter(SIPEngine.SIP_UNREGISTERED_INTENT));
Run Code Online (Sandbox Code Playgroud)
我每次发送它时都会获得注册意图,但是当我发送它时,我从未获得UNREGISTERED Intent.
我应该为UNREGISTERED Intent设置另一个广播接收器吗?
我需要在stl向量中存储一个类型为bstr的VARIANT.我不确定如何在矢量中存储VARIANT类型.
vector<VARIANT> vec_MyVec;
VARIANT var_Temp;
VariantInit(&var_Temp);
var_Temp.vt = VT_BSTR
var_Temp.bstrVal = SysAllocString("Test");
vec_MyVec.push_back(var_Temp);
Run Code Online (Sandbox Code Playgroud)
此实现是否会导致内存泄漏?存储VARIANTS的最佳方法是什么?
谢谢
我有一个带有iframe的ASP.NET页面,用于在此页面上显示一些pdf报告.当用户从下拉列表中选择报告类型时,我将报告数据所需的内容添加到ASP.NET会话中,并将iframe的属性"src"更改为生成.pdf报告的.ashx模块地址.但是如果没有安装用于查看浏览器中的.pdf文件的Adobe glug-in,则浏览器建议保存报告文件,并且建议文件的名称为"HandlerName.ashx".但我想建议浏览器保存名为"Report.pdf"的文件.我可以这样做吗?有没有解决方法?
更准确的代码版本是:
class SomeParam;
class IBase
{
public:
virtual void Func(SomeParam* param = NULL)
{
cout << "Base func";
}
};
class DerivedA : public IBase
{
public:
void Func()
{
//do some custom stuff
cout << "DerivedA func";
IBase::Func();
}
};
class DerivedB : public IBase
{
public:
void Func()
{
//do some custom stuff
cout << "DerivedB func";
IBase::Func();
}
};
//at somewhere else
void FuncCaller(IBase *instance1, IBase *instance2)
{
IBase *i1 = instance1;
IBase *i2 = instance2;
i1->Func(); …Run Code Online (Sandbox Code Playgroud) 假设以下场景.
我在trunk中有两个文件A.cpp和B.cpp.在修订版50中,我创建了一个名为X的实验分支.因此,在修订版50中,主干和分支X都是相同的.
我继续在trunk上工作并添加C.cpp和D.cpp.然后我意识到A.cpp中有一个错误,所以我修复了这个错误.
现在我的问题是如何将更新的A.cpp发送到分支X而不发送其他文件(B.cpp C.cpp D.cpp)?
我需要慢慢地告诉我,日期的格式是天 - 月 - 年可能吗?我传给慢性病的数据也可能是今天/昨天/ 2天前的文字.
目前慢性病给了我2 Dec 2010而不是12 Feb 2010来自12-02-2010
我能想到的唯一解决方案是在将字符串传递给慢性字符之前交换日期和月份.
require 'chronic'
puts "12-02-2010 = #{Chronic.parse('12-02-2010')}" #should be 12 Feb 2010
puts "yesteday = #{Chronic.parse('yesterday')}" #working ok
puts "Today = #{Chronic.parse('today')}" #working ok
Run Code Online (Sandbox Code Playgroud) 也许我受限于我在动态语言方面的经验(Ruby on Netbeans和Groovy on Eclipse),但在我看来,动态语言的本质使它无法重构(重命名方法,类,推升,下拉,等)自动.
是否可以使用任何动态语言(使用任何IDE /工具)重构AUTOMATICALLY?我对Ruby,Python和Groovy特别感兴趣,以及重构与所有Java IDE中可用的100%自动重构相比如何.