我确定我在这里错过了明显的答案,但可以用手。我是 SubSonic 的新手并使用版本 3。我已经到了能够查询和插入的地步,但我坚持在插入后如何获取标识列的值。我看到另一篇提到 Linq 模板的帖子。我没有使用那些(至少我不认为我是......?)
TIA
... 更新 ...
所以我一直在调试我的代码,观察 SubSonic 代码是如何工作的,我发现了 indentity 列被忽略的地方。我使用 int 作为数据库中我的 ID 列的数据类型,并将它们设置为标识。由于 int 在 c# 中是不可为空的数据类型,因此通过执行 (key==null) 检查键列中是否存在值的 Add 方法 (public void Add(IDataProvider provider)) 中的逻辑测试可能是问题。获取标识字段新值的代码位于“真实路径”中,因为 int 不能为空,并且我使用 int 作为标识列数据类型,此测试永远不会通过。我的对象的 ID 字段中有一个我没有放在那里的 0。我假设它是在对象初始化期间设置的。我在这儿不准吗?是改变我在数据库中的数据类型的答案吗?
另一个问题(更多是好奇)。我注意到生成的类中的一些属性是用 ? 在数据类型之后。我不熟悉这个声明结构......给出了什么?有一些声明为 int(非关键字段),还有一些声明为 int?(关键领域)。这与他们在初始化时的处理方式有关吗?
任何帮助表示赞赏!
- 撞 -