我使用亚音速v.3在我的ASP.NET应用程序中用VB.NET(.NET framework 3.5)生成我的DAL层。 我使用了亚音速v.2和i,它为每个表和事件创建一个单独的.cs文件,每个类文件都有一个名为LoadByParam()或LoadByKey()的方法,以防万一想通过传递一些来加载对象字段值。
但在亚音速3中,当我添加核心文件并在我的项目中添加T4模板时,它会生成三个名为activrecord.vb的vb文件,context.vb和struct.vb
我想知道如何将所有表加载到单独的文件中,如亚音速 如何通过将一些字段作为字段传递来加载数据库对象 即在亚音速2.0,当我想加载用户表与一些给ID我是这样加载它 new myProject.user(column-name,filed-value); 我怎么能用亚音速3.0实现相同的?? ??
答案 0 :(得分:0)
如果您问我,我会在您的项目中添加一个c#类库并用于您的DAL,因为c#具有更广泛的用户群,因此需要进行更多测试。 VB和C#在解决方案中完美地协同工作
这就是说,最新的c#模板已经创建了单独的文件:https://github.com/subsonic/SubSonic-3.0-Templates/tree/master/ActiveRecord
我想没有人将代码迁移到vb.net atm。
关于你的第二个问题(如何通过columnname加载一个对象),亚音速3大量使用lambda表达式,所以你只需要使用一个表达式的重载(Func(用户,布尔))
换句话说:
dim user1 as new User(Function(x) x.UserName = "Test")
或
dim user2 as User = User.SingleOrDefault(Function(x) x.UserName = "Test")
甚至
dim user3 as User = (From u in User.All()
Where u.UserName = "Test"
Select u).SingleOrDefault()
最后两个返回User对象或Nothing。 第一个总是返回一个对象,即使用户不存在,所以你必须检查 user1.IsNew()如果需要。