caSTLe-activerecord - 无法将类型为 'MyType' 的对象转换为类型 'CaSTLe.Proxies.MyType'

标签 castle-activerecord

在什么情况下会出现以下错误?

无法将“MyType”类型的对象转换为类型“CaSTLe.Proxies.MyType”。

更新:

我在将 MyType.FindAllByProperty("col1", "foo"); 绑定(bind)到 GridView(完全是 Telerik 的:RadGrid )。这个错误不是每次都会出现,只是偶尔出现。这是我的网格的标记:

<telerik:RadGrid ID="grdList" runat="server" AutoGenerateColumns="false" OnNeedDataSource="grdList_NeedDataSource"
    OnUpdateCommand="grdList_UpdateCommand" AllowAutomaticUpdates="True" OnItemUpdated="grdList_ItemUpdated"
    AllowMultiRowEdit="true">
    <MasterTableView EditMode="InPlace" DataKeyNames="PageInRole_id" AllowAutomaticUpdates="true">
        <Columns>
            <telerik:GridBoundColumn DataField="ContainerPage.PageTitle" HeaderText="Title" UniqueName="ContainerPage.PageTitle"
                ReadOnly="true" />
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

更新 2

这里是所有异常消息和堆栈跟踪:

Unable to cast object of type 'PineCMS.Core.PageInRole' to type 'Castle.Proxies.PageInRoleProxy'. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidCastException: Unable to cast object of type 'PineCMS.Core.PageInRole' to type 'Castle.Proxies.PageInRoleProxy'.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[InvalidCastException: Unable to cast object of type 'PineCMS.Core.PageInRole' to type 'Castle.Proxies.PageInRoleProxy'.]
   Telerik.Web.UI.GetEnumerator>d__0.MoveNext() +175
   Telerik.Web.UI.GridDataTableFromEnumerable.FillDataTableFromEnumerable(IQueryable enumerable) +1285
   Telerik.Web.UI.GridDataTableFromEnumerable.FillData35() +3390
   Telerik.Web.UI.GridDataTableFromEnumerable.FillData() +824
   Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized() +28
   Telerik.Web.UI.GridEnumerableFromDataView..ctor(GridTableView owner, IEnumerable enumerable, Boolean CaseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +242
   Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner, IEnumerable enumerable, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +223
   Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields) +595
   Telerik.Web.UI.GridTableView.get_ResolvedDataSource() +243
   Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +42
   System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +72
   System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +147
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +261
   Telerik.Web.UI.GridTableView.PerformSelect() +23
   Telerik.Web.UI.GridTableView.DataBind() +363
   Telerik.Web.UI.GridTableView.Rebind() +101
   Telerik.Web.UI.GridCommandEventArgs.ExecuteCommand(Object source) +1174
   Telerik.Web.UI.RadGrid.OnBubbleEvent(Object source, EventArgs e) +185
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
   Telerik.Web.UI.GridItem.OnBubbleEvent(Object source, EventArgs e) +142
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927

最佳答案

此异常可能来自尝试将代理/延迟加载实体重新附加到 session 的代码。使用较新的 NHibernate 引发此异常的最有可能的 API 调用(我对 2.1 没有问题,但对最新版本确实有问题)是 Session.Lock(obj, LockMode.None)。/p>

如果该组件的程序员首先将实体从 ISession 中逐出,然后通过 id 将其重新加载(可能缓存?)到另一个实体中,或者执行 ISession.Update 这个问题应该会消失直到 NHibernate 团队找出潜在的问题。

关于caSTLe-activerecord - 无法将类型为 'MyType' 的对象转换为类型 'CaSTLe.Proxies.MyType',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170404/

相关文章:

nhibernate - 测绘生产数据库

c# - CaSTLe Active Record 多个数据库连接(Oracle 和 SQL)

c# - 在 CaSTLe ActiveRecord 中尝试通过主键查找

c# - 使用 CaSTLe ActiveRecord 插入多行并忽略任何重复项的推荐方法

c# - NHibernate EventListeners - 获取正在保存的实体的属性值

c# - 如何将 Linq 与 CaSTLe ActiveRecord 一起使用

c# - 部分延迟加载

带有命名参数的 nhibernate hql

c# - 如何将 CaSTLe ActiveRecord 与 SQL Server 2008 FILESTREAM 功能一起使用