如何使用Subsonic 3和SimpleRepostitory设置我的POCO?会议在哪里?

时间:2009-12-01 17:18:41

标签: subsonic subsonic3 subsonic-simplerepository

在使用SimpleSpository和SubSonic 3时,是否有某个地方详细说明了如何设置POCO?这听起来像是对配置的惯例,但我无法找到解释该约定的地方。

http://www.subsonicproject.com/docs/Conventions看起来像2.0版,并且也标记为不完整。 (顺便说一句:我很乐意帮助将文档重新组织成2.0和3.0,因为当前的文档在他们所指的版本上有点令人困惑。)

例如,我想知道如何设置

一对一的关系

用户< =>资料

class User {
  Id
  ProfileId instead of Profile? or is Profile profile possible?
}

class Profile {
  Id
  UserId instead of User? or is User user possible?
}

一对多的关系

class User {
  Id
  IList<Post> Posts (?) or IList<int> PostIds (?) or is this implied somehow?  or is this just wrong?
}

class Post {
  Id
  UserId instead of User? or is User user possible?
}

许多对多

我猜我需要设置多对多的表?

class User {
  IList<Blog> Blogs (?) or IList<int> BlogIds (?) or is this implied somehow?
}

class BlogsUsers {  // Do I have to create this class?
  UserId
  BlogId
}

class User {
  IList<User> Users (?) or IList<int> UserIds (?) or is this implied somehow?
}

在示例解决方案中,似乎没有这些设置,所以我想知道你将如何做(我的猜测收益示例):

一个对一

User.Profile

r.Single<Profile>(p=>p.User == userId);

父母一对多

Post.User

id = r.Single<Post>(postId).UserId;
r.Single<User>(id); // which kind of stinks with two queries, JOIN?

一对多的孩子

User.Posts

r.Find<Post>(p=>p.UserId == userId)

或多对多

User.Blogs

ids = r.Find<BlogsUsers>(bu=>bu.UserId == userId);
r.Find<Blog>(b=>b.BlogId == ids);  // again with the two queries?  :)

Blog.Users

ids = r.Find<BlogsUsers>(bu=>bu.BlogId == blogId);
r.Find<User>(u=>u.UserId == ids);  // again with the two queries?  :)

我认为必须有一种方法可以不使用这两个查询,并且已经以某种方式自动生成这些属性。说实话虽然我昨晚只花了一个小时玩一切,所以我有点害怕Rob对我大吼大叫。对不起! :P

如果这些不是自动的,那么3.0的视图和存储过程在哪里?请给我一个关于那些人的链接,同时你就是这样的人。

1 个答案:

答案 0 :(得分:1)

这可能是您最好的起点: http://subsonicproject.com/docs/Using_SimpleRepository

您可以在代码中设置关系,我们不会将这些关系转发到数据库(但希望很快)。理想情况下,您可以根据需要设置模型,并在准备就绪时手动“巩固”数据库中的关系。这是为了减少开发过程中的摩擦 - 在构建站点时,数据完整性并不值得担心。

那就是说,我知道人们想要这个功能 - 我只需要构建它。