所以,我在EF ORM中加入了一个存储过程。我通过Import Function
将SP添加到EF。我选择从SP列Complex Type
创建FolderColumn
。选择Run Custom Tool
后,SP已添加到我的实体的上下文cs
文件中:
public virtual ObjectResult<FolderColumn> GetColumnFolderModel(Nullable<long> caseid, Nullable<long> folderid, Nullable<long> userid)
{
var caseidParameter = caseid.HasValue ?
new ObjectParameter("caseid", caseid) :
new ObjectParameter("caseid", typeof(long));
var folderidParameter = folderid.HasValue ?
new ObjectParameter("folderid", folderid) :
new ObjectParameter("folderid", typeof(long));
var useridParameter = userid.HasValue ?
new ObjectParameter("userid", userid) :
new ObjectParameter("userid", typeof(long));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<FolderColumn>("GetColumnFolderModel", caseidParameter, folderidParameter, useridParameter);
}
我在Context Model中看到了实体:
使用我发现的XML编辑器编辑我的Context.edmx:
<ComplexType Name="FolderColumn">
<Property Type="Int64" Name="id" Nullable="false" />
<Property Type="String" Name="Display" Nullable="false" MaxLength="256" />
<Property Type="String" Name="Name" Nullable="false" MaxLength="256" />
<Property Type="String" Name="Width" Nullable="true" MaxLength="12" />
<Property Type="Boolean" Name="Sortable" Nullable="true" />
<Property Type="String" Name="Align" Nullable="true" MaxLength="48" />
<Property Type="Boolean" Name="Hide" Nullable="true" />
</ComplexType>
在<Schema>
标记下,以及我的常见实体类型。
我看不到FolderColumn
中的复杂类型Context.cs
。而且,更重要的是,复杂类型未映射到实体,因此我不能这样做:
BriefcaseEntities context = new BriefcaseEntities();
context.FolderColumn // <--- Not part of the context
以及对FolderColumn
的任何引用
The type or namespace name 'FolderColumn' could not be found (are you missing a using directive or an assembly reference?)
为什么我的新复杂类型不属于我的上下文实体?
答案 0 :(得分:0)
复杂类型表示结构化但未存储的内容。实体都存储在表中;复杂类型可以从SP,视图等返回。所以它是我期望看到的。