- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有主键 (Identity) 和几个 varchar
类型列的简单表。我尝试使用以下语法删除/销毁具有给定主键的记录:
SS3Test.DAL.TestClass.Destroy(x => x.TestId == _testId);
但是当它被调用时我得到以下异常:
无法将参数值从 Func
`2 转换为 Int32。
堆栈轨迹如下:
System.InvalidOperationException was unhandled Message="Failed to convert parameter value from a Func`2 to a Int32." Source="SubSonic.Core" StackTrace: at SubSonic.Query.SqlQuery.Execute() at SubSonic.Repository.SubSonicRepository`1.Delete(Object key, IDataProvider provider) at SubSonic.Repository.SubSonicRepository`1.Delete(Object key) at SS3Test.DAL.TestClass.Destroy(Func`2 expression) in E:\temp\SS3TEst\SS3Test.DAL\ActiveRecord.cs:line 2149 at SS3Test.Model.TestClass.Delete(Int32 warrantyId, Boolean destroy) in E:\temp\SS3TEst\SS3Test.Model\TestClass.cs:line 84 at SS3Test.GUI.FrmTestClass.btnDelete_Click(Object sender, EventArgs e) in E:\temp\SS3TEst\SS3Test.GUI\FrmTestClass.cs:line 72 at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at SS3Test.GUI.Program.Main() in E:\temp\SS3TEst\SS3Test.GUI\Program.cs:line 21 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.InvalidCastException Message="Failed to convert parameter value from a Func`2 to a Int32." Source="System.Data" StackTrace: at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) at System.Data.SqlClient.SqlParameter.GetCoercedValue() at System.Data.SqlClient.SqlParameter.Validate(Int32 index, Boolean isCommandProc) at System.Data.SqlClient.SqlCommand.BuildParamList(TdsParser parser, SqlParameterCollection parameters) at System.Data.SqlClient.SqlCommand.BuildExecuteSql(CommandBehavior behavior, String commandText, SqlParameterCollection parameters, _SqlRPC& rpc) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at SubSonic.DataProviders.DbDataProvider.ExecuteQuery(QueryCommand qry) at SubSonic.Query.SqlQuery.Execute() InnerException: System.InvalidCastException Message="Object must implement IConvertible." Source="mscorlib" StackTrace: at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType)
PS:- 我从这个答案中得到了一个解决方法,即从 db 中获取具有给定键的对象,然后对其调用 delete。它有效,但我想知道为什么我会收到此异常。我还使用 SS 3.0.3(今天(26Jan2K10)下载)。
最佳答案
这看起来像是一个正常的错误,因为 ActiveRecord Destroy 方法所依赖的 SubSonicRepository 没有 Delete(expression)
重载。
我认为如果您进入 ActiveRecord.tt 模板文件并找到:
public static void Destroy(Func<<#=tbl.ClassName#>, bool> expression) {
var repo = GetRepo();
repo.Delete(expression);
}
并将 Delete
替换为 DeleteMany
,这将删除所有为给定表达式返回 true 的记录(如果您使用的是主键,希望只是那个 :)
GC
关于c# - 亚音速 3 ActiveRecord 删除/销毁抛出奇怪的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141738/
这是一个令人尴尬的基本 n 层问题。 我在 VS2008 中使用亚音速创建了一个 DAL 项目。它有一个小部件类、一个小部件集合类和一个小部件 Controller 类。 我创建了引用它的业务逻辑项目
我有一个古老的困惑,我正在尝试使用亚音速将其铲入层中。问题是,我有这样的情况: 当 Hal 登录时,他的登录名使用数据库 X 来查找数据,使用数据库 Y 来查找他的帐户,使用数据库 Z 来查找他的联系
我有一个使用 Subsonic 生成的不错的 DAL。有没有办法为 BLL 生成骨架?我不想将 SS 层直接插入我的 GUI。 我浏览了两个 SS 论坛,似乎每个人都称 SSS 生成的层为 DAL,但
尝试使用 linq 在 subsonic 中进行左连接,但它似乎不起作用,我遇到了一个大错误。 我很确定查询是正确的,因为我已经用对象和 Linq2Sql 做了几次。 var
我有一个数据库表(Profile)来描述一个人。该表有一列“性别”(整数)。在 .NET 部分我有: public enum Sex { Male = 1, Female = 2 } public c
据我所知,Subsonic 2.2 需要 MySQL.data 5.2.3 dll。我正在尝试在 Visual Studio 中为 VB 项目集成亚音速 DAL。该项目已经使用了大量数据集。因此,Vi
我正在玩弄 Subsonic 3 的简单存储库,但在理解如何处理外键时遇到了瓶颈...... 如果我有一个产品对象包含 int ID; string name; string description;
我正在为一个重要项目寻找新的 ORM,我习惯于使用 ActiveRecord 进行 nHibernate,并且我已经对 EF4、性能和崩溃的 GUI 有了非常糟糕的体验。 所以在网上搜索我找到了 Su
好的, 我热切地等待 subsonic 3.0 的发布以用作我的低级数据层,现在它已经发布了。我目前正在使用 ActiveRecord 模板(尝试了存储库和高级模板)并且我有一个巨大的请求和几个问题:
有没有办法用 subsonic 执行自连接? 最佳答案 subsonic 上曾经有过关于这个的讨论,现在已经死了。它基本上说: it is [not] possible with SqlQuery y
运行最新版本的 SubSonic (3.0.0.3)。检索单个记录、更改一个字段并调用 .Save 会导致以下代码中的空引用异常: 公共(public)无效更新(IDataProvider 提供者){
我正在尝试使用 Subsonic3 中的 SimpleRepository 功能 - 首先,我必须对 RobC 表示衷心的感谢 - Subsonic 真的很棒,我迫不及待地想看到 SimpleRepo
我正在玩弄 Subsonic 3.0 SimpleRepository 并尝试使用一个 linq 查询获取菜单和菜单项,但菜单项始终为空 菜单 public class Menu { publ
这里有什么问题?这就是我在 Subsonic 2 CodingHorror 示例中发现的方法,但不起作用:( new CodingHorror().Execute("SELECT * FROM pro
我有一个带有主键 (Identity) 和几个 varchar 类型列的简单表。我尝试使用以下语法删除/销毁具有给定主键的记录: SS3Test.DAL.TestClass.Destroy(x =>
有什么区别:.Save(); 。添加();.Update(): 最佳答案 您没有提及您正在使用哪些模板(我将假设 ActiveRecord),但作为一般规则: 如果对象保存将插入IsNew==true
Subsonic 3.0 的新手,想知道如何对对象属性执行 LIKE 运算符。给定以下类(class),我将如何使用 Subsonic 3.0 执行 LIKE 操作。例如 SELECT * FROM
我遇到了以下情况,我有 2 个表(产品和类别)。 Products 表中的字段 CategoryID 具有 Categories 表的外键。 现在,对于我的 CMS 中的数据表,我正在寻找一种方法来根
有人可以帮忙吗?当我尝试生成我的 Structs.cs 文件时,该过程失败并出现错误,因为 MySQL 提供程序未返回 SchemaName。 "错误 3 运行转换:System.ArgumentNu
我最近尝试将一个由 SubSonic 2.2 生成 DAL 的 .net 2.0 项目升级到 Visual Studio 2010 下的 .NET 4.0。 项目转换没有错误,但现在我在尝试启动它时收
我是一名优秀的程序员,十分优秀!