C#:动态变量未按预期绑定

时间:2017-02-01 20:37:52

标签: c# entity-framework dynamic

我的数据库中有一个实体,它有一个相应的"历史记录"实体。两个实体持有的数据基本相同; "历史" table用于跟踪此数据随时间的变化,主表仅包含最新数据。

我的C#代码中有些地方需要访问可能来自主实体实例或"历史记录"实体。例如,两个实体都有一个" SalesPrice"我希望能够使用适用于任一实体类型的属性编写单个语句。

C#"动态"关键字似乎应该启用此功能。例如,如果我们假设 MethodWithDynamicReturnType()被声明为返回动态,并且在运行时将返回主实体或历史实体的实例,那么我想成为能够编写这样的代码:

 dynamic d;
 d=MethodWithDynamicReturnType();
 Console.WriteLine(d.SalesPrice.ToString());

但是我得到了一个异常("无法对空引用执行运行时绑定")。所以,我试图让运行时更加明确:

 Main_Entity m;
 History_Entity h;
 MethodThatWillFillOneOutParameterOnly(out m, out h);
 dynamic d;
 if(h!=null){d=h;}else{d=m;}
 Console.WriteLine(d.SalesPrice.ToString());

这并没有阻止异常。有趣的是,如果我投出变量" d"到" Main_Entity"或" History_Entity,"在适当的情况下,我的代码可以正常工作......但是并没有避免这会导致动态的整个观点?"

要么我完全被误解为动态,"或者,寻找其他解释,实体框架可能有过错吗?我注意到我分配到" d"的实际运行时间值。有一个奇怪的代理"类名,我更喜欢看的实际实体类型名称。这表明存在某种间接性,即保持"动态"从达到预期目的?

0 个答案:

没有答案