如何使用subsonic 3.0为db中的每个表创建单独的文件(.vb或.cs)

时间:2011-03-22 09:06:57

标签: .net orm subsonic subsonic3 data-access-layer

我使用亚音速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实现相同的?? ??

1 个答案:

答案 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()如果需要。